首页 新闻 搜索 专区 学院

关于tcpclient绑定本地发送端口的问题,捣腾一周要崩溃了

0
[待解决问题]

这几天一直在捣腾一个聊天程序,服务端用listener监听,客户端利用client连接服务端并发送注册、登录等信息,我把客户端的注册和登录放在同一个窗口,客户端发送注册和登录时用TcpClient client=new TcpClient(ipendpoint) 对client进行本地IP和本地发送端口绑定,发送完毕后client.close().。

服务端根据 

TcpClient tcp=new TcpClient()

tcp = listener.AcceptTcpClient(); 

然后利用

(IPEndPoint)tcp.Client.RemoteEndPoint() 得到客户端的发送IP和端口号,

接下来利用得到的客户端IP,客户端发送端口号向客户端发送反馈信息。

我在“注册—登录”窗口时可以连接服务器,并发送注册、登录信息成功,登录成功后进入好友列表窗口,这个时候再去绑定登录时的发送端口,并向服务器端发送“请求好友列表”信息时,当程序运行client.connect(serverip,serverport) 时,就会出现错误提示: (通常一个套接字/地址/端口只能使用一次。serverip:serverport)

该错误提示服务器的端口号正被使用,服务器确实一直在监听serverport,既然注册、登录时能连接成功,现在也只是让客户端去重新connect服务器却不行,是不是新打开的窗口造成的问题?“好友列表”这个窗体是在监听子线程里使用this.begininvoke(delegate)显示的。请哪位指点一二,谢谢了。

 

问题补充: 今天又测试一几遍,发现了原因:客户端注册时,client绑定了IP和发送端口号p,就算发送完client.close()了,如果登录时再次绑定IP和端口号P,就会报错。原因就是在这里了,不能关闭之后再次绑定本地端口。但还没找到解决办法。
启锢的主页 启锢 | 菜鸟二级 | 园豆:205
提问于:2011-01-02 12:19
< >
分享
所有回答(2)
0

我已经崩溃过了,这个问题你解决了没?

Rookier | 园豆:652 (小虾三级) | 2012-08-20 09:52
0

等30秒试试

猫公爵 | 园豆:202 (菜鸟二级) | 2016-06-15 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册