如果服务端一来就listen,客户端发出connect请求时,服务端会发生一个connectrequst事件,你在这个时间里写入如下代码。if winsock1.state<>0 then winsock1.close:winsock1.accept requestID,这样就行了。
你所描述的没有碰到过。不是bug! 就如楼上说的,3661512(.Net) 那样做就每错
if winsock1.state<>0 then winsock1.close:winsock1.accept requestID如果不用这行代码我怎么完成TCP连接呢 我所说的情况下,如果一运行就LISTEN,就会出现有时连不上的情况 但如果将winsock1.listen加在一个按纽上,点击才LISTEN,就肯定能连上如果没有winsock1.close:winsock1.accept requestID这行代码,那怎么样都连不上的
'------------------------------------------------------------------- '-------------------------初始化部份-------------------------------- '------------------------------------------------------------------- Private Sub Form_Load() On Error Resume Next Me.Show DoEvents lpos = 1 SendPos = 1 AddToTray Me, h Open "d:\聊天记录.txt" For Binary As #5 If GetUname = "" Then WritePrivateProfileString "运行", "昵称", "啊娜", "zhachat.ini" WritePrivateProfileString "运行", "头像", 19, "zhachat.ini" End If
GetUname GetPic busond = LoadResData(101, "CUSTOM") WinList.Listen Bylist.Listen End SubPrivate Sub Command1_Click() '8361做听 8362做连 WinStr.Close Bysend1.Close WinList.Close Bylist.Close WinStr.RemoteHost = Text1 Bysend1.RemoteHost = Text1 WinStr.Connect Bysend1.Connect End Sub 服务端即客户端,客户端即服务端
就如楼上说的,3661512(.Net) 那样做就每错
我所说的情况下,如果一运行就LISTEN,就会出现有时连不上的情况
但如果将winsock1.listen加在一个按纽上,点击才LISTEN,就肯定能连上如果没有winsock1.close:winsock1.accept requestID这行代码,那怎么样都连不上的
在你的服务端起来后可以先看看你开辟的端口是否以处在监听状态可以用netstat -an在dos界面下查看一下,看后面的状态这一列的值。如果是Listening哪你的客户端就可以connect上。
'-------------------------初始化部份--------------------------------
'-------------------------------------------------------------------
Private Sub Form_Load()
On Error Resume Next
Me.Show
DoEvents
lpos = 1
SendPos = 1
AddToTray Me, h
Open "d:\聊天记录.txt" For Binary As #5 If GetUname = "" Then
WritePrivateProfileString "运行", "昵称", "啊娜", "zhachat.ini"
WritePrivateProfileString "运行", "头像", 19, "zhachat.ini"
End If
GetUname
GetPic
busond = LoadResData(101, "CUSTOM")
WinList.Listen
Bylist.Listen
End SubPrivate Sub Command1_Click()
'8361做听 8362做连
WinStr.Close
Bysend1.Close
WinList.Close
Bylist.Close
WinStr.RemoteHost = Text1
Bysend1.RemoteHost = Text1
WinStr.Connect
Bysend1.Connect
End Sub
服务端即客户端,客户端即服务端
比如,在Listen之前先检查是否为sckClosed,
在Senddata之前先检查是否为sckConnected
另外,你是否在winsock控件的error事件里写上显示错误信息,因为连接不上时会触发error事件的,里面有error信息……