---- 随着资源共享和实时通讯需要很多计算机应用早已甩开单兵作战模式转入联合行动
---- 网络在计算机世界里越来越发挥着举足轻重作用在WINDOWS应用中处理实时通讯最常用到还是MICROSOFT公司提供WINSOCKControl控件许多资料都细述了WINSOCK在VB中使用思路方法就连WINDOWS本身提供hlp文件也是针对VB而写笔者实际应用需要琢磨出了WINSOCKControl控件在PB中应用思路方法好东西不敢独自享用拿出来和大家共享
---- 下面以个简单为例介绍说明WINSOCKControl控件在PB中使用:
---- 、在窗口中添加WINSOCKControl控件:
---- 在应用中新开个窗口在窗口画板中点击controls-->OLE菜单项弹出Insert object窗口单击Insert control标签从列表框中双击选定Microsoft Winsock control将winsock图标贴在窗口上
---- 在中该Control控件名称定为winsock_a(甲方)和winsock_b(乙方)
---- 2、设置信息输入输出文本框:
---- 在窗口中增加个按钮cb_1,两个单行文本框sle_1,sle_2分别用于输入要发送串和接受对方发送串
---- 3、设置通讯协议:
---- WINSOCKControl控件允许用户以UDP和TCP两种协议中任选种进行通讯
---- 1.UDP协议设置:UDP协议是种无连接通讯协议在通讯的前需要绑定remotehost和remoteport属性如果需要双向通讯还要设置localport属性
---- 在甲方(本机地址为:134.1.1.1)窗口Open事件中加入如下语句:
winsock_a.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_a.object.remotehost="134.1.1.2"
//对方ip地址
winsock_a.object.remoteport=6000
//对方winsock通讯端口号
winsock_a.object.localport=6001
//本机winsock通讯端口号
winsock_a.object.bind
//绑定通讯协议
---- 在乙方(本机地址为:134.1.1.2)窗口Open事件中加入如下语句:
winsock_b.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_b.object.remotehost="134.1.1.1"
//对方ip地址
winsock_b.object.remoteport=6001
//对方winsock通讯端口号
winsock_b.object.localport=6000
//本机winsock通讯端口号
winsock_b.object.bin
//绑定通讯协议
---- 2.TCP协议设置:TCP协议在通讯前需要进行连接
---- 在甲方(作为服务器端)窗口Open事件中加入如下语句:
winsock_a.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_a.object.localport=6001
//本机winsock通讯端口号
winsock_a.listen
//启动监听
---- 在甲方winsock_aControl控件Connectionrequest事件中加入如下语句:
//接受到对方连接请求后
winsock_a.object.state< >0 then
winsock_a.close
end
winsock_a.accept(requestID)
//建立直接连接
//requestID是Connectionrequest事件自己参数
---- 在乙方(作为客户端)窗口Open事件中加入如下语句:
winsock_b.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_b.object.remotehost="134.1.1.2"
//对方ip地址
winsock_b.object.remoteport=6000
//对方winsock通讯端口号
winsock_b.connect //发出连接请求
---- 3.无论采用哪种协议都要在窗口Close事件中加入如下语句:
winsock_a/*或winsock_b*/.object.state< >0 then
winsock_a.close
end
---- 否则可能第 2次使用时发生异常问题
---- 3、开始通讯
---- 在按钮cb_1(caption属性设为‘发送’)click事件中加入如下语句:
winsock_a/*或winsock_b*/.object.send (sle_1.text)
---- 在winsock_a/*或winsock_b*/Control控件dataarrival事件中加入如下语句:
//接受到对方数据后
datastr1
winsock_a/*或winsock_b*/.object.getdata (def datastr1)
sle_2.text=datastr1 //将数据串显示在文本框中
---- 以上实际上体现了聊天器底层工作原理稍加修改扩充就可以做成个很好聊天软件Software
最新评论