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

C++ 从一个客户端连接两个套接字,c++,sockets,C++,Sockets,我是个新手。我正在编写一个clent服务器应用程序,我遇到了以下问题 克莱恩特: void * msgDispatcher(...){ ... while(isRunning){ read(rxSocket, buf, ...); } } int main(...){ ... connect(txSocket, ...); connect(rxSocket, ...); createThread(..., msgDispatcher, .

我是个新手。我正在编写一个clent服务器应用程序,我遇到了以下问题

克莱恩特:

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, ...);
   }
}
我从客户机发送的所有消息都会在服务器上接收,但客户机上不会接收到来自服务器的所有响应。 服务器使用writetxSocket…发送消息。。。;这里没有问题。但是客户端一直在readrxSocket上等待。。。没有收到任何MSG

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


谢谢

我今天搜索了几个小时,并返回了问题中的代码。两个插座现在可以用了。客户端上的RxSocket接收来自服务器的所有消息,TxSocket向服务器发送消息。 看起来好像是密码输入错误


注意:侦听功能只能调用一次,但调用两次不会影响任何事情。

为什么使用两个插座,一个用于接收,另一个用于发送?面向连接的套接字是双向的!如何确保服务器的txSocket与客户端的RXSSocket相同?BigBoss,我使用两个套接字,因为我需要在不等待服务器响应的情况下从客户端发送新请求。但我还需要从服务器接收响应,并且我已经创建了新的线程来读取套接字。如果我使用同一个套接字,那么读取阻塞了socketI am planning。例如,响应可以在1分钟内发送,我无法发送新请求。Zane,我认为服务器上的txSocket与客户端上的rxSocket不对应,这导致了问题。我不知道怎么检查。如何在服务器上实现txSocket将对应于clinet套接字。我想我的代码可以做到这一点,客户端上的第二个连接用于rxSocket,服务器上的第二个接受用于txSocket。在从服务器检查数据之前,客户机可以向服务器发送任意数量的数据。客户端没有理由在同一套接字上发送另一个请求之前必须等待响应。例如,阅读关于。