如何在VB编程环境下实现两台PC机的TCP/IP通讯
来源:网络收集 点击: 时间:2024-04-07在电脑上的VB环境下新建工程1,创建新的standard EXE工程,窗体1名称:frmserver,窗体的标题改为:“TCP服务器”,在此窗口中放置一个winsock控件(名称为tdpserver),当做服务器,添加两个Textbox控件,分别命名为:txtsenddata与txtoutput
2/8编写程序代码:(发送字符串)
private sub Form_Load()
Tcpserver.localport=1001 设置侦听端口
Tcpserver.Listen 侦听
End sub
Private sub tcpserver_connectionRequest(Byval requestID as Long)
If tcoserver.statesckclosed then
tcpserver.close
tcpserver Accept requestID
Private sub txtsenddata_change()
Tcpserver.senddata txtsenddata.text
End sub
Private sub tcpserver_DataArrival(Byval bytesTotal as Long)
Dim strData as string
TCPserver.GetData strData
End sub
Private sub Timer1_Timer()
Label3.caption=tcpserver.state
End sub

TCP客户端:在另一台PC机上新建工程,添加窗口,命名:frmclient 标题:Tcpclient 添加winsock控件,命名:tcpclient
添加两个textbox控件,第一个命名为txtsend,第二个命名为:txtoutput,在窗口上放一个commandButton控件,命名为cmdconnect,将CommandButton控件的标题改为connect。
4/8编写程序:
Private sub Form_Load()
Tcpclient.RemoteHost=”127.0.0.1”(192.168.1.100)服务器的IP地址或是本地地址
Tcpclient.RemotePort=1001 ‘侦听端口应该相同
End sub
Private sub cmdconnect_click()
Tcpclient.connect
End sub
Private sub txtsenddata_change()
Tcpclient.senddata txtsend.text
End sub
Private sub tcpclient_DataArrival(Byval bytesTotal as Long)
Dim strdata as string
Tcpclient.GetData strdata
Txtoutput.Text=strdata
End sub
Private sub Timer1_Timer()
Label3.Caption=tcpclient.state
End sub

Winsock控件state的属性与描述
常数(值) 描述
Sckclosed 0 缺省的,关闭
Sckopen 1 打开
SckListening 2 侦听
Sckconnectionpending 3 连接挂起
SckResolvingHost 4 识别主机
SckHostResolved 5 已识别主机
SckConnecting 6 正在连接
SckConnected 7 已经连接
SckClosing 8 同级人员正在关闭连接
Sckerror 9 错误
6/8将服务器与客户机发送与接收数据部分的程序进行修改,实现字节数组的发送与接收,如,客户机发送定长字节数组。
服务器a1(0 to 7)
将元素放在七个TEXT中
代码如下:
Private sub command1_click()
Dim a1(0 to 7) as byte
a1(0)=text1(0).text
a1(1)=text1(1).text
a1(2)=text1(2).text
a1(3)=text1(3).text
a1(4)=text1(4).text
a1(5)=text1(5).texta1(6)=text1(6).text
a1(7)=text1(7).text
tcpserver.senddata a1
end sub
7/8对应的客户端代码
Private sub tcpclient_DataArrival(Byval bytesTotal as Long)
Dim b() as byte
Tcpclient.getdata b
Text1(0).text=b(0)
Text1(1).text=b(1)
Text1(2).text=b(2)
Text1(3).text=b(3)
Text1(4).text=b(4)
Text1(5).text=b(5)
Text1(6).text=b(6)
Text1(7).text=b(7)
If Text1 (0).text=11 then
Dim c(0 to 7) as Byte
c(0)=text2(0).text
c(1)=text2(1).text
c(2)=text2(2).text
c(3)=text2(3).text
c(4)=text2(4).text
c(5)=text2(5).text
c(6)=text2(6).text
c(7)=text2(7).text
tcpclient.senddata c
End sub
对应的服务器接收端的代码如下:
Private sub tcpserver_DataArrival(Byval bytesTotal as Long)
Dim bt() as byte
Text3(0).text=bt(0)
Text3(1).text=bt(1)
Text3(2).text=bt(2)
Text3(3).text=bt(3)
Text3(4).text=bt(4)
Text3(5).text=bt(5)
Text3(6).text=bt(6)
Text3(7).text=bt(7)
End sub
8/8运行的过程,将网络连接好后,点击服务器程序上的发送,如果发送的第一个字节为11的话,在客户机显示服务器发送过来的数据的同时,服务器接收到客户机发送过来的数据并显示出来。
注意事项经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士
本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
编程版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_455351.html