Я пытаюсь написать программу, которая должна работать на Windows и Linux.Он использует сервер, который обрабатывает данные, поэтому я настраивал его, используя инструкции #def, пока не пришел к многопоточности.Я немного искал и думаю, что pthread должен нормально работать из коробки (windows & linux).
У меня есть функция эха, которая получает и отправляет данные из и в сокет.
static void echo(int client_socket) { /* or SOCKET client_socket */
char echo_buffer[RCVBUFSIZE];
int recv_size;
recv_size = recv(client_socket, echo_buffer, RCVBUFSIZE,0);
echo_buffer[recv_size] = '\0';
}
для обработки клиента у меня есть бесконечный цикл, который принимает () соединение и передает его функции эха.
/* sock = int | SOCKET */
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
memset( &server, 0, sizeof (server));
bind(sock,(struct sockaddr*)&server, sizeof( server));
listen(sock, 5);
for (;;) {
len = sizeof(client);
fd = accept(sock, (struct sockaddr*)&client, &len);
echo( fd );
, поэтому я попытался заменить функцию эха на pthread
len = sizeof(client);
fd = accept(sock, (struct sockaddr*)&client, &len);
pthread_t thread_id;
pthread_create( &thread_id , NULL , echo, (void*) &client);
Я также пытался изменить 4-й параметр pthread_create, чтобы передать его напрямую, но не могу понять, как использовать их в моем случае.