从一个客户端连接两个套接字

时间:2012-10-14 12:41:01

标签: c++ sockets

我是套接字的新手。我正在写一个clent-server应用程序,我遇到了以下问题。

克伦特:

void * msgDispatcher(...){
   ...
   while(isRunning){
      read(rxSocket, buf, ...);
   }
}

int main(...){
   ...
   connect(txSocket, ...);
   connect(rxSocket, ...);

   createThread(..., msgDispatcher, ...);
   while(isRunning){
      fgets(buf, ...);
      write(txSocket, buf, ...);
  }
}

服务器:

int main(...){
   ...
   listenerSocket = socket(...);
   bind(listenerSocket,...);

   listen(listenerSocket, 10);
   rxSocket = accept(listenerSocket, (sockaddr*) &clientAddr, &addrLength);

   listen(listenerSocket, 10);
   txSocket = accept(listenerSocket, (sockaddr*)  &clientAddr, &addrLength);

   while(isRunning){
      read(rxSocket, ...);
      write(txSocket, ...);
   }
}

我从客户端发送的所有消息都在服务器上接收,但客户端上未收到服务器的所有响应。 服务器使用 write(txSocket,...); 发送消息,此处没有问题。但客户端正在等待读取(rxSocket,...),并且没有收到消息。

此代码中有什么不正确?如何从服务器上的一个客户端连接/接受两个套接字,或者有最好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

我今天挖了几个小时并返回问题中的代码。两个插座现在工作正常。客户端上的RxSocket接收来自服务器的所有消息,TxSocket将消息发送到服务器。 看起来这是代码中的拼写错误。

P.S。 listen()函数只能被调用一次,但调用两次不会影响任何东西。