在窗体上拉个winsock控件上来,然后把控件Index属性填成 0 别的代码抄进去就可以了,服务器端:Private Sub Form_Load() Winsock1(0).LocalPort = 2013 '指定服务器监听端口 Winsock1(0).Listen '开始监听 End SubPrivate Sub Winsock1_Close(Index As Integer) Winsock1(Index).Close '对方断开 End SubPrivate Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) Dim I As Integer I = 1 If Winsock1.UBound > 0 Then For I = 1 To Winsock1.UBound If Winsock1(I).State = 0 Then Exit For '查找空闲的winsock控件 Next End If If I > Winsock1.UBound Then Load Winsock1(I) '没有空闲控件的话创建一个新控件 Winsock1(I).Accept requestID '应答客户端的请求 连接建立时将触发connect事件,表示连接正式建立 End SubPrivate Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim Data() As Byte'如果只想试试效果的话你可以改成 Dim Data As String '不过用数组接收数据会比字符串好 Winsock1(Index).GetData Data '接收数据 '数据通信基本上就在这下边来写代码了 End SubPrivate Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) Winsock1(Index).Close '网络错误 End Sub
客户端的话下边这样写就可以了 winsock1.connect "远程计算机名或者IP",服务端口 发送数据用 winsock1.SendData Data 接收数据一样是在DataArrive事件里 同一控件要重复使用的话下一次connect之前要close掉
如果tcp下做的话,服务端用掉一个winsock做server 然后建个winsock数组处理客户端的连接,客户端程序只要一个控制就够了。winsock连接上之后,在remoteip里就可以读到IP了,不过主机名好象读不上来,要客户端程序自己来提交了
再请教一下,这个winsock数组 通常要建包含多少个WINSOCK的数组呢?
再请教一下,这个winsock数组 通常要建包含多少个WINSOCK的数组呢?
数组是做成动态的,需要的时候就load一个,做个连接计数,自己控制一下连接的数量,我做过的东西都比较小,连接数也都才十几个的,上限有多大我也不清楚。
再请教一下,这个winsock数组 通常要建包含多少个WINSOCK的数组呢?
数组是做成动态的,需要的时候就load一个,做个连接计数,自己控制一下连接的数量,我做过的东西都比较小,连接数也都才十几个的,上限有多大我也不清楚。能否给提供个详细的代码,或代码片段也可
别的代码抄进去就可以了,服务器端:Private Sub Form_Load()
Winsock1(0).LocalPort = 2013 '指定服务器监听端口
Winsock1(0).Listen '开始监听
End SubPrivate Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close '对方断开
End SubPrivate Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim I As Integer
I = 1
If Winsock1.UBound > 0 Then
For I = 1 To Winsock1.UBound
If Winsock1(I).State = 0 Then Exit For '查找空闲的winsock控件
Next
End If
If I > Winsock1.UBound Then Load Winsock1(I) '没有空闲控件的话创建一个新控件
Winsock1(I).Accept requestID '应答客户端的请求 连接建立时将触发connect事件,表示连接正式建立
End SubPrivate Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Data() As Byte'如果只想试试效果的话你可以改成 Dim Data As String '不过用数组接收数据会比字符串好
Winsock1(Index).GetData Data '接收数据
'数据通信基本上就在这下边来写代码了
End SubPrivate Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1(Index).Close '网络错误
End Sub
winsock1.connect "远程计算机名或者IP",服务端口
发送数据用 winsock1.SendData Data
接收数据一样是在DataArrive事件里
同一控件要重复使用的话下一次connect之前要close掉
再请教一下,客户端的LOCALPORT是否可以随意设置的,有没有必要和服务器端一致,如果不设置的话,那在与服务器端建立连接后,这个LOCALPORT的值会是多少?
再请教一下,客户端的LOCALPORT是否可以随意设置的,有没有必要和服务器端一致,如果不设置的话,那在与服务器端建立连接后,这个LOCALPORT的值会是多少?客户端的localport设置可以随意,但是不能是被其它程序占用的端口,以及一些协议使用端口,如80,8080 135等等如果没有设置会默认为0,可能会冲突
再请教一下,客户端的LOCALPORT是否可以随意设置的,有没有必要和服务器端一致,如果不设置的话,那在与服务器端建立连接后,这个LOCALPORT的值会是多少?客户端的localport设置可以随意,但是不能是被其它程序占用的端口,以及一些协议使用端口,如80,8080 135等等如果没有设置会默认为0,可能会冲突非常感谢,可否给提供一个类似QQ的完整源代码,哈哈。