Мне предложили решить проблему ... вот как это происходит:
Мне нужно написать две программы, клиентскую и серверную.
Моя клиентская программа собираетсявыполнить некоторую тривиальную задачу X, которая создает очередь размера N.
Затем клиентская программа создаст N потоков, и каждый из этих дочерних потоков создаст сокет и отправит некоторую информацию, относящуюся к X, на сервер. .
Затем сервер получает эту информацию от клиента и создает дочерние процессы для дальнейшей обработки этой информации и отправляет ее обратно клиенту.
Мой главный вопрос заключается в том, как приступить к созданиюсокет ВНУТРИ потока.
#include <pthread.h>
#include <stdio.h>
#define NTHREADS 5
void *process_X(void *x_void_ptr)
{
//random
//do i create the socket here?
return NULL;
}
int main()
{
static int x = 0;
pthread_t tid[NTHREADS];
for(int i=0;i<NTHREADS;i++)
{
if(pthread_create(&tid[i], NULL, inc_x, &x))
{
fprintf(stderr, "Error creating thread\n");
return 1;
}
}
// Wait for the other threads to finish.
for (int i = 0; i < NTHREADS; i++)
pthread_join(tid[i], NULL);
return 0;
}
Кроме того, в информации, которую мне дали о создании сокетов, я буду вводить имя хоста и номер порта из командной строки. Поэтому мне нужно будет также использовать argv [], поэтому я не знаю, как это сделать, если его не будет в основной функции.
Любая помощь очень ценится ...