在PB中使用WINSOCK.OCX做双向通信的简单例子

      最后更新:2022-08-03 19:01:36 手机定位技术交流文章

      1.将WINSOCK控件添加到窗口中:
      在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出
      Insert object窗口,单击Insert control标签,从列表框中双击选定
      Microsoft Winsock control,将winsock的图标贴在窗口上。
      在程序中,控件叫做winsock_a(A侧)和winsock_b(B侧)。
      设置信息的输入和输出文本框:
      在窗口中添加cb_1按钮,两个单行文本框sle_1,sle_2,用于输入
      发送的字符串和接受的字符串。
      三、设置通讯协议:
      WINSOCK控制允许用户选择UDP和TCP协议之间的通信。
      1.UDP协议设置:UDP协议是未连接的通信协议,在通信之前必须被绑定
      定remotehost和remoteport属性,如果需要双向通讯,还要设置localport属性

      在A-side (主机地址:)窗口中将下列句子添加到打开事件中:
      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协议。
      在A侧(作为服务器侧)窗口中,将下列句子添加到打开事件中:
      winsock_a.object.protocol=0
      //winsock通信协议设置为TCP协议
      winsock_a.object.localport=6001
      //机器的winsock通信端口号码
      winsock_a.listen()
      //启动监听
      在甲方winsock_a控件的Connectionrequest事件中加入如下语句:
      //接受与另一方连接的请求后
      if winsock_a.object.state< >0 then
      winsock_a.close()
      end if
      winsock_a.accept(requestID)
      //建立直接连接
      //requestID是Connectionrequest事件自己的参数
      下列句子被添加到B侧(作为客户端)窗口的开放事件:
      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.使用Whichever协议,将下列句子添加到窗口关闭事件中:
      if winsock_a/*或winsock_b*/.object.state< >0 then
      winsock_a.close()
      end if
      否则,第二个使用可能会出现异常问题
      四、开始通讯
      在按钮cb_1(caption属性设为‘发送’)的click事件中加入如下语句:
      winsock_a/*或winsock_b*/。对象。发送(sle_1.(Text)
      将下列句子添加到winsock_a/*或winsock_b*/控件的数据到达事件中:
      //收到另一方的资料后
      string datastr1
      winsock_a/*或 winsock_b*/。 object.getdata (def datastr1)
      sle_2.text=datastr1 // 在文本框中显示数据字符串
      上面的程序实际上体现了口语的基本工作原理,并且可以通过小修改和扩展来完成
      这是一个非常好的聊天软件。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31446.html

          热门文章

          文章分类