我在做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);// 这句出错,请问有没有办法改端口号

解决方案 »

  1.   

    to bool a = m_Socket.Connected;// 为什么 a = false这当然是false,你只是绑定本机的ip和端口,有没有去连接。to m_Socket.Bind(EndPointB);// 这句出错,请问有没有办法改端口号重新new一个。
      

  2.   

    回复人: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一个。
      

  3.   

    to blackant2(乔峰)to 1即使判断是否连接,也是判断AccSock的属性。其次,对于
    AccSock = m_Socket.Accept();
    只是接受一个Socket请求而已,即别的机器发送到你机器端口的信息;看你这段代码来说,是服务器端部分,因此对于服务器端来说,没有连接之说。to 2对于一个socket对象来说,同时只能监听一个端口,你像换一个端口,去产生一个新的socket对象来完成,或者关闭原有的,然后再重新绑定。
      

  4.   

    在这里,我还试验了一件事,即:
    我在 5000(端口号)上Accept的端口,对方(客户机)的Socket的RemoteEndPoint属性中(端口号为5000),然后我把监听的端口Close()销毁,这时Accept()出来的端口还是可以通讯的。我关键想知道,端口号与Socket对象是不是要求一对一,即一个本地端口号,是否只能对应一个Socket对象。