当前位置: 技术问答>linux和unix
liunx 下的socket编程问题,帮帮忙!
来源: 互联网 发布时间:2015-11-04
本文导语: 我用client_fd = accept( sockfd, (struct sockaddr*)&Client_addr, &sin_size);这样的方法得到的 client_fd .再通过 fock()函数为客户端去创建不同的进程! 然后都是通过client_fd 去发和收客户端的信息,比如send(client_fd , "aa", 2, 0...
我用client_fd = accept( sockfd, (struct sockaddr*)&Client_addr, &sin_size);这样的方法得到的 client_fd .再通过 fock()函数为客户端去创建不同的进程!
然后都是通过client_fd 去发和收客户端的信息,比如send(client_fd , "aa", 2, 0);
可是问题出现了.为什么每次得到的client_fd 都是一样的..都是等于4..那我怎么区别我要发给哪个
客户端呢?如果我想指定一个客户端发送信息..那我该怎么办...
然后都是通过client_fd 去发和收客户端的信息,比如send(client_fd , "aa", 2, 0);
可是问题出现了.为什么每次得到的client_fd 都是一样的..都是等于4..那我怎么区别我要发给哪个
客户端呢?如果我想指定一个客户端发送信息..那我该怎么办...
|
if ( pthread_create( &mythread, NULL, (void *)RunAnswer, NULL ))
改为
if ( pthread_create( &mythread, NULL, (void *)RunAnswer, client_fd ))
void RunAnswer(void * arg)里加强制转换
int client_fd = (int)arg;
这样就可以传递client_fd了。当然RunAnswer最后的close(client_fd)还要的。
改为
if ( pthread_create( &mythread, NULL, (void *)RunAnswer, client_fd ))
void RunAnswer(void * arg)里加强制转换
int client_fd = (int)arg;
这样就可以传递client_fd了。当然RunAnswer最后的close(client_fd)还要的。