Socket se = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
se.Bind(new IPEndPoint("localhost", 9999));
se.Listen(500);
Socket s = se.Accept();
byte[] b = new byte[1];
int c = 0;
c = s.Receive(b);//没问题能够收到服务器发过来的信息
s.Close();
但是如果改为Socket se = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
se.Bind(new IPEndPoint("localhost", Convert.ToInt32(txtClientPort.Text)));
se.Listen(500);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect("localhost", 9999);
byte[] b = new byte[1];
int c = 0;
c = s.Receive(b);//在这儿一直被阻塞,说明没能接收到套接字里的信息
s.Close();
为什么用的二种方式s.Connect("localhost", 9999);连接到IP端口就不行呢?MSDN上说用Connect也是可以接收到消息的啊?

解决方案 »

  1.   

    Sorry第二个发错了,现在重发:Socket se = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    se.Bind(new IPEndPoint("localhost", 9999));
    se.Listen(500);
    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    s.Connect("localhost", 9999);
    byte[] b = new byte[1];
    int c = 0;
    c = s.Receive(b);//在这儿一直被阻塞,说明没能接收到套接字里的信息
    s.Close();
      

  2.   

    是的,一定要Accept(),不监听你怎么接入连接?