第一次做socket程序,做一个局域网聊天工具,其中一个文件传输功能,我仿照的网上代码学习的,但是在绑定套接字过程中出现了问题:
  //创建一个网络端点   
                IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse("1005"));
      
                //MessageBox.Show(IPAddress.Any);                   //创建一个套接字   
                Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                try
            {
                //绑定套接字到端口   
                server.Bind(ipep);
                //开始侦听(并堵塞该线程)   
                server.Listen(10);
            }
 catch
            {
                
            }
              while (true)
                {                    try
                    {
                        Socket client = server.Accept();
                        ClientSocket = client;
                        Thread TempThread = new Thread(new ThreadStart(this.Create));
                        TempThread.Start();
                    }
                    catch (Exception ex)
                    {
                    
                    }
                }
如果两个人互相传输文件,第一次没有问题,但是如果接收方关闭聊天窗口,发送方再次向接收方发送文件,接收方就会提示错误:套接字不能重复绑定,如果catch掉以后,就报:server必须使用Bind方法,请教各位前辈,这该如何解决

解决方案 »

  1.   

    顶一下,你可以参考这位大师:http://topic.csdn.net/u/20080623/08/4bbd2475-45f1-42e3-a613-16b094759ade.html#,我不太看懂
      

  2.   

    //创建一个套接字   
      Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      try
      {
      //绑定套接字到端口   
      server.Bind(ipep);
      //开始侦听(并堵塞该线程)   
      server.Listen(10);
    这段代码在程序中执行一次就行了
    不要重复绑定把它们和下面的代码分开。
      

  3.   

    怎么才能让他执行一次呢,放在load里面每次打开还是会执行啊
      

  4.   

    你绑定了没释放当然不能再次绑定同一个端口了
    关闭聊天窗体是不是等于关闭接收了
    那样你是不是应该释放socket资源
    自己想想看
      

  5.   

    我写close()方法了,可是没有任何效果
      

  6.   

    就socket.close()啊,难道不是这个吗
      

  7.   

    你shutdown(xx.both)试试看
    最好参考下MSDN的写法
      

  8.   

    "再次向接收方发送文件,接收方就会提示错误:套接字不能重复绑定,"你再次发送方做的什么处理?
    是connect还是Send?
    为什么这两个操作会让接收方再次装载窗体?
    你再考虑考虑程序的架构是否合理