我是套接字的新手。我正在写一个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,...),并且没有收到消息。
此代码中有什么不正确?如何从服务器上的一个客户端连接/接受两个套接字,或者有最好的方法吗?
由于
答案 0 :(得分:0)
我今天挖了几个小时并返回问题中的代码。两个插座现在工作正常。客户端上的RxSocket接收来自服务器的所有消息,TxSocket将消息发送到服务器。 看起来这是代码中的拼写错误。
P.S。 listen()函数只能被调用一次,但调用两次不会影响任何东西。