여러 클라이언트가 연결되는 클라이언트 서버 채팅 프로그램의 클라이언트 측 구현에 문제가 있습니다. 문제는 내가 가로 질러가는 것이다. 정확하게 (다른 클라이언트에게 메시지를 보내고) 동시에 (다른 클라이언트에서 메시지를 채팅하는) 어떻게해야 하는가? 무슨 일이 일어나고 있는지 나는 항상 데이터를 보내고 결코 읽지 않는다는 것입니다. 나는 포크를 들고 읽어야하고 다른 쪽은 보내야합니까? 여기 c 소켓 : 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