【发布时间】:2020-02-22 21:40:59
【问题描述】:
我有一个问题要解决...这是怎么回事:
我需要编写两个程序,客户端和服务器。
我的客户端程序将执行一些琐碎的任务 X,它会创建一个大小为 N 的队列。
然后客户端程序会创建N个线程,这些子线程会各自创建一个socket,并将一些关于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[],所以我不知道该怎么做,如果它不在 main 函数中。
非常感谢任何帮助...
【问题讨论】:
-
在任何其他上下文中创建任何其他套接字的方式相同。
标签: c++ multithreading sockets