当前位置: 技术问答>linux和unix
求助,关于linux下socket的select模式编程
来源: 互联网 发布时间:2015-04-03
本文导语: 基本思路是server有一个socket监听accept。 每当有一个client连接时,将accept返回的socket加入到一个全局vector里。 另外有一个负责recv所有client的thread。 用select模式处理vector里所有的socket。 但是我的程序在select时候堵塞...
基本思路是server有一个socket监听accept。
每当有一个client连接时,将accept返回的socket加入到一个全局vector里。
另外有一个负责recv所有client的thread。
用select模式处理vector里所有的socket。
但是我的程序在select时候堵塞了,client send后,server也没有反映。
主要代码如下:
server端:
vector fd;
main()
{ int s, t;
pthread_t tID;
s= establish(PORTNUM);//创立accept socket
for (;;) {
t= accept_connection(s);
fd.push_back(t);
if(fd.size()==1)
pthread_create(&tID, NULL, recvs, NULL);
}
}
void* recvs(void* x)
{
fd_set stFdread;
int i,n,t;
while(1)
{
FD_ZERO(&stFdread);
n=fd.size();
for(i=0;i0)
{
for(i=0;i
每当有一个client连接时,将accept返回的socket加入到一个全局vector里。
另外有一个负责recv所有client的thread。
用select模式处理vector里所有的socket。
但是我的程序在select时候堵塞了,client send后,server也没有反映。
主要代码如下:
server端:
vector fd;
main()
{ int s, t;
pthread_t tID;
s= establish(PORTNUM);//创立accept socket
for (;;) {
t= accept_connection(s);
fd.push_back(t);
if(fd.size()==1)
pthread_create(&tID, NULL, recvs, NULL);
}
}
void* recvs(void* x)
{
fd_set stFdread;
int i,n,t;
while(1)
{
FD_ZERO(&stFdread);
n=fd.size();
for(i=0;i0)
{
for(i=0;i