在应用中,服务端要同时侦听两个端口,我想用一个线程侦听一个端口。分开只开一个侦听时正常,但开两个时,后一个线程初始化socket时会导致程序退出是不是socket库是线程不安全的?如何可以做到同时侦听两个端口,用多进程??我是在LINUX下写,不过WINDOWS也该差不多吧,我有点晕了..

解决方案 »

  1.   

    绝对可以的,不过你如果使用MFC的SOCKET类的时候就要特别注意了。
    不过我们一般网络多线程用的SOCKET都是用自己封状好了的类,这样比较安全
      

  2.   

    问题不在SOCKET,侦听多个端口是完全可以的.
      

  3.   

    问题没有解决,急啊现在是不能在一个进程里调socket两次,因为我想侦听两个端口int testFD = socket(AF_INET, SOCK_STREAM, 0);
    int listenFD = socket(AF_INET, SOCK_STREAM, 0);  //这里会导致程序退出, 不行啊用linux, g++
      

  4.   

    m_pSvrSock1 = new CMyServerSocket(this);
    if (m_pSvrSock1->Create(SOCKET_PORT_1,SOCK_STREAM))
       {
          TRACE("m_pSvrSock1 创建成功\n");
          if(m_pSvrSock1->Listen())
          {
             TRACE("m_pSvrSock1 开始侦听....\n");
          }
       }
       
    m_pSvrSock2 = new CMyServerSocket(this);
    if (m_pSvrSock2->Create(SOCKET_PORT_2,SOCK_STREAM))
       {
          TRACE("m_pSvrSock2 创建成功\n");
          if(m_pSvrSock2->Listen())
          {
             TRACE("m_pSvrSock2 开始侦听...\n");
          }
       }
       
      

  5.   

    同一个进程里申请两个socket是肯定可行的,你的问题一定不在这里