我是套接字的新手。我正在编写一个客户端服务器应用程序,我遇到了以下问题。
克伦特:
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, ...);发送消息 这里没有问题。但是客户端一直在等待read(rxSocket, ...)并且没有收到任何消息。
这段代码有什么不正确的?如何从服务器上的一个客户端连接/接受两个套接字,或者有没有最好的方法?
谢谢