Socket在Accept到一个连接上来后的Socket后为什么Connected属性为false,这时可以Close掉吗?

cenmengqi 2006-10-28 10:33:29
我在做Socket通讯的问题,本意是想在通讯中换端口绑定,请问如何实现
即:
IPEndPoint EndPointA = new IPEndPoint(IPAddress.Paser("127.0.0.1"), 5000);
IPEndPoint EndPointB = new IPEndPoint(IPAddress.Paser("127.0.0.1"), 5111);
m_Socket.Bind(EndPointA);
m_Socket.Listen(10);
AccSock = m_Socket.Accept();
bool a = m_Socket.Connected;// 为什么 a = false
m_Socket.Bind(EndPointB);// 这句出错,请问有没有办法改端口号
...全文
806 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cenmengqi 2006-10-29
  • 打赏
  • 举报
回复
在这里,我还试验了一件事,即:
我在 5000(端口号)上Accept的端口,对方(客户机)的Socket的RemoteEndPoint属性中(端口号为5000),然后我把监听的端口Close()销毁,这时Accept()出来的端口还是可以通讯的。

我关键想知道,端口号与Socket对象是不是要求一对一,即一个本地端口号,是否只能对应一个Socket对象。
Knight94 2006-10-28
  • 打赏
  • 举报
回复
to blackant2(乔峰)

to 1

即使判断是否连接,也是判断AccSock的属性。其次,对于
AccSock = m_Socket.Accept();
只是接受一个Socket请求而已,即别的机器发送到你机器端口的信息;看你这段代码来说,是服务器端部分,因此对于服务器端来说,没有连接之说。

to 2

对于一个socket对象来说,同时只能监听一个端口,你像换一个端口,去产生一个新的socket对象来完成,或者关闭原有的,然后再重新绑定。
blackant2 2006-10-28
  • 打赏
  • 举报
回复
回复人:Knight94(愚翁) ( 五星(高级)) 信誉:110 2006-10-28 15:16:00 得分:0
?
to bool a = m_Socket.Connected;// 为什么 a = false

这当然是false,你只是绑定本机的ip和端口,有没有去连接。

to m_Socket.Bind(EndPointB);// 这句出错,请问有没有办法改端口号

重新new一个。
Knight94 2006-10-28
  • 打赏
  • 举报
回复
to bool a = m_Socket.Connected;// 为什么 a = false

这当然是false,你只是绑定本机的ip和端口,有没有去连接。

to m_Socket.Bind(EndPointB);// 这句出错,请问有没有办法改端口号

重新new一个。
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-28 10:33
社区公告

让您成为最强悍的C#开发者