これはwhileループで、このコードは機能しています。問題は、バッファサイズを減らして、バッファサイズよりも大きなデータを送信した場合、データを個別に受信することです。たとえば、170バイト(100バイトのバッファ)を送信すると、最初の100バイトが読み取られ、次に70バイトが読み取られます。これを処理するための最良の方法は何ですか?複数のユーザーがこのようなデータを送信する場合、それらの分離されたパケットを連結するにはどうすればよいですか?前もって感謝します..
while(m_severRun){
int event_cnt = epoll_wait(m_epfd, m_events, EPOLL_SIZE, -1);
if(event_cnt == -1){
perror("epoll_wait error \n");
break;
}
for(int i=0; i<event_cnt; i++){
if(m_events[i].data.fd == m_serverSock){
printf("ServerManager::eventAcceptLoop, A Client has been connected \n");
struct sockaddr_in clnt_adr;
socklen_t adr_sz = sizeof(clnt_adr);
int clnt_sock = accept(m_serverSock, (struct sockaddr*)&clnt_adr, &adr_sz);
if(!addClient(clnt_sock))
break;
}
else{
int str_len = read(m_events[i].data.fd, buf, BUF_SIZE);
printf("read %d \n", str_len);
if(str_len == 0){
if(!removeClient(m_events[i].data.fd))
break;
close(m_events[i].data.fd);
}
else {
printf("ServerManager::eventAcceptLoop, A message has been received \n");
//pushWork(buf);
//write(m_events[i].data.fd, buf, str_len);
}
}
}//for loop end
}//while loop end