为每个线程建立一个socket用于接收数据,而且端口都一样,会不会冲突?如果没有问题干嘛还要用select模式、WSAAsyncSelect模式,直接就为每个线程建立一个socket,反正他们都会找到自己的socket,不会冲突。select模式、WSAAsyncSelect模式优点是什么?

解决方案 »

  1.   

    不会,
    TCP会自动选择不同的端口
    用netstat -a 就可以看到了
      

  2.   

    不是很清楚。但我们的程序是开一个线程就建立一个socket,没问题。
      

  3.   

    我是用udp,端口自己定的,会不会冲突?
      

  4.   

    如果没有问题的话,嘛还要用select模式、WSAAsyncSelect模式,直接就为每个线程建立一个socket,反正他们都会找到自己的socket,不会冲突。
      

  5.   

    to Richuen22(江无缺) 
    端口不能相同?不可能吧,如果这样的话,发方怎样知道发去那个端口。
      

  6.   

    老大,你怎么这么死板呢.
    他既然能在选择模式条件下,为每个线程建立Socket不发生冲突,那就说明:
    为每个线程建立一个socket用于接收数据,而且端口都一样,不会冲突
      

  7.   

    其实你问这个问题的关键是你没有理解线程的含义和工作机制,建议你看看深入浅出MFC里面讲的特别清楚。
      

  8.   

    TCP用了套接字对的技术,支持同一服务器在同一端口与多个套接字建立TCP连接,但TCP协议不允许多个服务器绑定到同一个IP地址和同一个端口号,即不允许同时存在多个完全相同的绑定!UDP则未使用套接字对技术,不能用同一端口.
      

  9.   

    那么IE和Netscape都使用80端口,他们为什么不冲突呢?好像浏览器用的是UDP吧?
      

  10.   

    IE和Netscape是连接到服务器而不是在端口侦听吧。
      

  11.   

    浏览器用的是TCP
    所谓的同一端口其实只是listen的端口,对于每个不同的socket会自动分配不同的端口号的UDP端口不能相同,不然会返回10048(WSAEADDRINUSE)错误,
    如果要使用UDP通信,就必须知道对方接收数据的端口号
      

  12.   

    select模式、WSAAsyncSelect模式优点是什么?
    就是在不用线程的情况下可以同时处理多个端口!你以为线程那么好用么? 
    不是每个人都喜欢用线程的。再有就历史原因, 在设计TCP编程接口时,
    好象还没线程呢。
      

  13.   

    不太能够理解,如果仅仅是listen用的80端口,connect用了另外的端口,怎么可能通过路由器呢?(如果路由器仅开放80端口的话)