标题: linux c socket多线程编程 [打印本页] 作者: yel617 时间: 2011-11-28 10:52 标题: linux c socket多线程编程 我现在写一个服务端程序,要求可以链接多个客户端
有报警信息时要能发送报警信息,如果客户端有数据发来时,接收客户端的信息
现在运行起来有问题,当我打开第一个客户端时运行正常,当我断开这个链接,再重新打开一个客户端时,发送时就出现了问题,情况如下:
第一个链接
There is a new socket link coming 4!
alarmtype = 50
data from socket 4, bytes = 1212
data from socket 4, bytes = 1212
Socket link 4 disconnect!
第二个链接
There is a new socket link coming 5!
alarmtype = 50
send error
: Bad file descriptor
data from socket 5, bytes = 1212
data from socket 5, bytes = 1212
代码如下:
void *sockalarm(void *arg)
{
int sdbytes = 0;
int cnfd = (int)arg;
int connfd;
rtcp_hdr_t rtcp_head;
warn_hdr_t pkt;
struct sockaddr_in cliaddr;
socklen_t cliaddr_len;
pthread_t rcvthread[pthread_count];
pthread_t sendthread[pthread_count];
struct sockaddr_in servaddr, cliaddr;
int sockfd;
pthread_t sockthread;