程序前面代码如下:
private IPAddress ip=IPAddress.Parse("127.0.0.1");
        private IPEndPoint server;
        private Socket sock;
        private Socket accsock;
        public Form1()
        {
            InitializeComponent();
        }
       
        private void btnjianting_Click(object sender, EventArgs e)
        {
            try
            {
                ip = IPAddress.Parse(txtip.Text);            }
            catch
            {
                MessageBox.Show("你输入的IP地址不正确");
            }
            try
            {
                Thread thread = new Thread(new ThreadStart(accp));
                thread.Start();
            }
            catch(Exception ee)
            {
              MessageBox.Show(ee.Message);
            }
        }
        private void accp()
        {
            server = new IPEndPoint(ip, Int32.Parse(txtduankou.Text));
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Bind(server);
            sock.Listen(50);
            MessageBox.Show("主机" + txtip.Text + "端口" + txtduankou.Text + "开始监听");
            while (true)
            {
                accsock = sock.Accept();
                if(accsock.Connected)
                {
                    
                    MessageBox.Show("与客户建立连接");
                    Thread thread = new Thread(new ThreadStart(round));
                    thread.Start();
                }
            }
        }运行监听的时候 只能监听127.0.0.n  这个IP,不能监听其他的IP  这个能不能改成也可以监听其他IP吗?
监听其他IP的时候出错显示       sock.Bind(server);在其上下文中,该请求的地址无效。
请高手帮帮  谢谢 

解决方案 »

  1.   

    我不明白你为什么要指定监听的IP,这个IP只能是 127.0.0.1或者是你的本机的IP地址,其实地址那是肯定不是监听的,其实人家写服务端的时候,都不写监听的IP,只接写监听的端口即可
      

  2.   

    就是啊  我发的 就是服务器端的一部分。 有办法改成可以监听其他IP吗? 输入其他IP按监听按钮就程序发生错误,显示sock.Bind(server);在其上下文中,该请求的地址无效。
      

  3.   

    Socket里的监听应该指的是侦听网络中有没有其他端试图跟你连接,绑定的肯定是本机的地址,按照你说的“输入其他IP按监听按钮”这应是sock.connect(某个IP),主动连接其他端。聊天程序的话没有服务器与客户端之分吧,每个端都在侦听他人的连接,自己也可以主动连接其他人。我觉得应该是这样的