listen是用在服务端的 和 connect用在客户端
如果是客户端:
wsk(0).RemoteHost=xxx.xx.xx.xxx
wsk(0).RemotePort=5000
wsk(0).Connect
否则:
wsk(0).LocalPort=5000
wsk(0).Listen
如果是客户端:
wsk(0).RemoteHost=xxx.xx.xx.xxx
wsk(0).RemotePort=5000
wsk(0).Connect
否则:
wsk(0).LocalPort=5000
wsk(0).Listen
也就是说,listen和connet要在一起使用!!
wsk(1).accept wskclient(1).connect
wsk(2).accept wskclient(2).connect
.... .....
wsk(0).Listenany error message?
用两个Socket 数组分别表示服务器端 svr() 与客户端 cnt(),客户端请求连接时,服务器svr(0)响应并用svr(n)接受连接服务器端要连接客户端时,使用cnt(n)向客户机请求连接要查看Socket状态,可以看其State属性
http://pandoraliu.myetang.com/gd.rar
源码在这里,大家看了以后,改进一下吧!
有好的建议,有好的修改,给我消息,或回贴
问题在frmSelSerCln的winsock控件的DataArrial中
问题在frmServer的winsock控件的DataArrial中
'---send beFrd IP to those who already online user-----
Case sData = "/SendBeFrdIPs"
rsBeFrd.Open "select * from " & sUserID & "", ConBeFrd, adOpenStatic, adLockOptimistic
If rsBeFrd.RecordCount > 0 Then
Do While Not rsBeFrd.EOF
If Trim(rsBeFrd("BeFrdIP")) <> "/" Or Trim(rsBeFrd("BeFrdIP")) <> Null Then
Dim aa As String
aa = rsBeFrd("BeFrdID")
wskSBeIP(0).Connect Trim(rsBeFrd("BeFrdIP")), ConPort
wskSBeIP(0).SendData "/BeFrdIP#" + sUserID + "*" + Trim(sUserIP) + "~"
rsBeFrd.MoveNext
Exit Do
End If
rsBeFrd.MoveNext
Loop
End If
有没有写信了,你可以在winsock的Connect事件中写了msgbox "成功!"
winsock的DataArrival事件是中用(winsock1.SendData 与winsock1.GetDate)
来发送你所要传的数据!这个我以前也做过,只是那时候的代码给丢,不过当时
我确实做成了。很有意思的。(其实可能已通了,关键是你对写winsock事件时是不是写对了)