扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年10月2日
关键字:
在本页阅读全文(共2页)
♣frmclient窗体的设计内容
窗体的配置内容如图3-2
♣程序的代码
private sub form_load()
‘指定远程主机的ip地址。如果是localhost,代表的ip地址为127.0.0.1,并且也代表本机。
Tcpclient.RemoteHost=”localhost”
‘设置本机连接端口的localport属性的内容
‘请注意!必须是整体值
tcpclient.remoteport=2000
‘设置窗体的标题内容
Me.Caption=”frmclient”
Label1.caption=”传送的文字”
Label2.caption=”接收的文字”
Cmdconnect.caption=”与主机连接”
End sub
Private sub cmdconnect_click()
‘调用tcpclient控件的connect方法,来初始化与主机的连接请求
tcpclient.connect
end sub
private sub txtsend_change()
‘当txtsend控件的内容发生变化时,立即调用tcpclient控件的senddata方法,将txtsend控件的内容传送给主机
tcpclient.senddata txtsend.text
end sub
private sub tcpclient_dataarrival(byval bytestotal as long)
‘说明即将接收的数据类型
dim strdata as string
‘调用tcpclient控件的getdata方法,将接收的数据以vbstring数据类型存放strdata变量之中。
Tcpclient.getdata strdata,vbstring
‘将strdata变量的内容,存放在txtoutput控件之中。
Txtreceive.text=strdata
End sub
♣程序的执行结果
当您的应用程序架构是属于主从式架构时,一般来说,客户端应该不止一个而已。但是,如果每一个客户端使用的一组连接端口时,那么如果有100个客户端呢?如果有1000个客户端呢?那么究竟要增加多少个winsock控件呢?同时,也得要分成100(或是1000)组accept子程序,接着每一部客户端都必须记得固定的连接端口号。
其实,您大可不必如此辛苦。您可以利用Visable Basic控件数组的方式并利用监听用的数组元素(一般都是索引值“
private connmax as long
private sub form_load ()
dim I as integer
connmax =200
sckserver(0).localport=1001
sckserver(0).listen
for I =1 to connmax
load sckserver(i)
next
end sub
private sub sckserver_connectionrequest(index as integer,byval requestid as long)
dim I as intege
for I =1 to connmax
if sckserver(1).state=sckclosed then
sckserver(I).accept requestid
end if
end if
end sub
在上述的程序范例中,将会建立一个具有“
4.UDP连接的基础
在 建立UDP的应用程序时,其过程会比TCP协议简单许多。这是由于UDP协议在数据传送之前,可以不需要特别明确的连接方式。但是,在上述的TCP连接方式之中,Winsocke控件必须设置在“监听(Linsten)”状态之下,同时在客户端准备与主机进行连接时,主机端也必须要使用Accept方法来允许客户端所要求的连接。
反观在UDP协议方面,双方仅仅需要使用Bind方法,即可与对方连接并且传输数九,因此,UDP协议连接过程的处理方式确实比TCP简单许多。下面介绍使用UDP协议来传送信息的过程。
4-1UDP的连接范例
在此只做简单的介绍
♣窗体frm PeerA的设计内容
如图4-1所示
♣窗体的程序代码
Private Sub Form_Load()
′控件的名字为udpPeerA
With udpPeerA′重点:必须将 RemoteHost 的值修改为对方计算机的名字。
RemoteHost= ″PeerB″
RemotePort = 1001 ′连接的端口号。
Bind 1002 ′绑定到本地的端口。
End With
frmPeerB.Show′显示第二个窗体。
End Sub
Private Sub txtSend_Change()
′在键入文本时,立即将其发送出去。
udpPeerA.SendData txtSend.Text
End Sub
Private Sub udpPeerA_DataArrival (ByVal bytesTotal As Long)
Dim strData As String
udpPeerA.GetData strData
txtOutput.Text = strData
End Sub
♣窗体frmpeerB的设计内容
如图4-2所示
♣窗体frmpeerB的程序代码
Private Sub Form_Load()
′控件的名字为 udpPeerB。
With udpPeerB
′重点:必须将RemoteHost的值改为对方计算机的名字。
RemoteHost= ″PeerA″
RemotePort = 1002 ′要连接的端口。
Bind 1001 ′绑定到本地的端口上。
End With
End Sub
Private Sub txtSend_Change()
′在键入后立即发送文本。
udpPeerB.SendData txtSend.Text
End Sub
Private Sub udpPeerB_DataArrival (ByVal bytesTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者