64,282
社区成员
发帖
与我相关
我的任务
分享
//listen线程
void* sock_listen_thread(void* arg)
{
while(1){
switch (net_status){
case CONNECTED:
sleep(1);
case DISCONNECTED:
remote_sock_fd = accept(local_sock_fd, (struct sockaddr*) &remote_sock_addr, (socklen_t*) &addr_len);
if(remote_sock_fd < 0) perror("ERROR accept()");
else{
net_status = CONNECTED; //net_status变更为已连接
if (pthread_create(&sock_recv_tid, NULL, sock_recv_thread, NULL) != 0){
printf("Error pthread_create(sock_listen_tid) \n");
}
}
}
}
return ((void*) 0);
}
//接收线程
void* sock_recv_thread(void* arg) {
while(1){
.......
recv_ret = recv(remote_sock_fd,recv_buffer,RECV_BUFFER_LENGTH,0);
if(recv_ret<=0) net_status = DISCONNECTED; //recv返回值小于0,net_status变更为已断开
.......
}
}