C++ 在线程C+内创建套接字+;
我有一个问题要解决。。。事情是这样的: 我被要求写两个程序,客户端和服务器端 我的客户机程序将执行一些琐碎的任务X,这将创建一个大小为N的队列 然后,客户端程序将创建N个线程,这些子线程将分别创建一个套接字,并向服务器发送一些与X有关的信息 然后,服务器从客户端接收该信息,并创建子进程来进一步处理该信息,然后将其发送回客户端 我的主要问题是如何在线程内创建套接字C++ 在线程C+内创建套接字+;,c++,multithreading,sockets,C++,Multithreading,Sockets,我有一个问题要解决。。。事情是这样的: 我被要求写两个程序,客户端和服务器端 我的客户机程序将执行一些琐碎的任务X,这将创建一个大小为N的队列 然后,客户端程序将创建N个线程,这些子线程将分别创建一个套接字,并向服务器发送一些与X有关的信息 然后,服务器从客户端接收该信息,并创建子进程来进一步处理该信息,然后将其发送回客户端 我的主要问题是如何在线程内创建套接字 #include <pthread.h> #include <stdio.h> #define NTHREA
#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;
}
#包括
#包括
#定义第5行
作废*处理程序(作废*处理程序)
{
//随机的
//我在这里创建套接字吗?
返回NULL;
}
int main()
{
静态int x=0;
pthread_t tid[NTHREADS];
对于(int i=0;i
我的主要问题是如何在线程内创建套接字
#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;
}
process\u X
函数中的所有内容都发生在新线程中。因此,您确实创建了注释指示的套接字
所以我也需要使用argv[],所以如果它不在主函数中,我不知道怎么做
pthread\u create
的最后一个参数被传递到process\u X
,这就是X\u void\u ptr
的含义。您只需将X\u void\u ptr
强制转换为需要的任何类型
我建议解析main
函数中的CLI参数,并将数据安排在struct
中,然后通过pthread\u create
将数据传递到process\u X
,这正是我在回答中所希望的。您介意为答案的最后部分编写一些..伪代码吗?解析CLI参数nts进入主函数?argv
将包含字符串。您可能可以将主机名用作字符串(我对BSD套接字有点生疏)要创建套接字,但这对端口不起作用。要将字符串转换为整数,您可以使用cstdlib
中的atoi
。我相信我的套接字代码中有以下代码:port_number=atoi(argv[2]);server=gethostbyname(argv[1]);您是说我应该创建一个包含这两个参数的结构来通过pthread_create?是的,pthread_create
只允许您传递一个参数,而不允许传递多个参数。因此,我们需要一个结构作为解决方法。与在任何其他上下文中创建任何其他套接字的方法相同。