当前位置:编程学习 > VB >>

vb 聊天室编写问题

Option ExplicitPrivate Sub Command1_Click() '点击发送按钮If Winsock1.State = 7 ThenWinsock1.SendData Text3.Text '发送数据到对方End If
List1.AddItem "我说的话:" & Text3.TextText3.Text = "" '清空发送文本框Text3.SetFocus
End Sub
Private Sub Form_Load()Winsock1.LocalPort = 1600 '设置服务端口号Text1.Textwinsock1.LocalIP '读取服务器ip地址Text2.Text = 1600Winsock1.Listen '设置监听Text3.SetFocus

End Sub
Private Sub Form_Unload(Cancel As Integer)Winsock1.CloseEnd Sub
Private Sub Winsock1_Close() '客户端断开连接后If Winsock1.State <> 0 ThenWinsock1.Close'Unload Winsock1List2.Clear '在线列表处理End IfEnd Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)Dim ip As String
If Winsock1.State <> 0 ThenWinsock1.CloseEnd IfWinsock1.Accept requestID '接受远程主机的请求ip = Winsock1.RemoteHostIPList2.AddItem ip

End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim str As StringWinsock1.GetData strList1.AddItem "对方说的话:" & str
End Sub



这是我编的程序,聊天室的服务端
我的问题是客户端连接成功后,点击断开连接后,再次登录服务器不成功。
我的客户端现在只有一个,故只用了一个winsock1.
求大家帮我看看是啥问题
是winsock没释放吗? --------------------编程问答-------------------- 端口没有马上释放造成
winsock似乎在close后,端口没有立即释放,会延时一点时间,所以端口不能马上再被使用 --------------------编程问答--------------------
引用 1 楼 worldy 的回复:
端口没有马上释放造成
winsock似乎在close后,端口没有立即释放,会延时一点时间,所以端口不能马上再被使用

那怎么解决呢? --------------------编程问答--------------------
引用 2 楼 weilai_li 的回复:
引用 1 楼 worldy 的回复:
端口没有马上释放造成
winsock似乎在close后,端口没有立即释放,会延时一点时间,所以端口不能马上再被使用
那怎么解决呢?


等会再连接,或者换一个口连接 --------------------编程问答--------------------
引用 3 楼 worldy 的回复:
引用 2 楼 weilai_li 的回复:引用 1 楼 worldy 的回复:
端口没有马上释放造成
winsock似乎在close后,端口没有立即释放,会延时一点时间,所以端口不能马上再被使用
那怎么解决呢?

等会再连接,或者换一个口连接

等了两分钟连接还是不行,如果把服务端关了再运行就可以。 --------------------编程问答-------------------- --------------------编程问答--------------------  服务器端的winsock,在接收到close事件时,应该调用cloase方法关闭,如果需要,则在再调用listen方法监听 --------------------编程问答--------------------
引用 6 楼 worldy 的回复:
服务器端的winsock,在接收到close事件时,应该调用cloase方法关闭,如果需要,则在再调用listen方法监听

那具体怎么解决了? --------------------编程问答-------------------- 不是已经告诉你了?还问?

Private Sub TxSocks_Close(Index As Integer)
    TxSocks(Index).Close
End Sub
--------------------编程问答-------------------- 是不是加这个啊
Private Sub Winsock1_Close() '客户端断开连接后
If Winsock1.State <> 0 Then
Winsock1.Close
'Unload Winsock1
List2.Clear
 '在线列表处理
End If
End Sub

这个我程序里有这段啊 --------------------编程问答-------------------- 一般要等一会儿,要马上能使用,上次使用的端口没有释放,你就要换一个端口
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,