У меня возникли проблемы с моей клиентской версией программы чата клиентского сервера, где подключаются несколько клиентов. Проблема в том, что я сталкиваюсь с тем, как точно я должен отправлять (сообщение чата другому клиенту) и получать (сообщение чата от другого клиента) одновременно? Что происходит, так это то, что я всегда отправляю данные и никогда не читаю. Нужно ли мне разветвлять и читать один, а другой отправить?c socket: recv и отправка данных одновременно
здесь соответствующий код
стороне клиента
while(1) {
fd_set rfds, wfds;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
FD_SET(serverSocket, &rfds);
FD_SET(serverSocket, &wfds);
if(select(serverSocket+1, &rfds, &wfds, NULL, NULL) < 0) {
perror("select");
exit(-1);
}
if (FD_ISSET(serverSocket, &rfds)) {
// we got data, read it
}
if (FD_ISSET(serverSocket, &wfds)) {
printf(">");
// read keyboard
sendLen = 0;
while ((cmd[sendLen] = getchar()) != '\n')
sendLen++;
cmd[sendLen] = '\0';
// send the data
}
}
Не могли бы вы попробовать 2 разных потока для чтения и записи отдельно? – Ganesh