将发消息和接收消息交给两个不同的线程处理,通过while循环实现无限收发,输入”q“退出。
server端
void *recvMsg(void *arg)
{
pthread_mutex_lock(&mutex1);
while(!flag)
{
pthread_cond_wait(&cond1, &mutex1);
}
int new_fd = *(int*)arg;
char buff[1024] = {
0};
cout << "waiting for msg..." << endl;
int ret = recv(new_fd, buff, sizeof(buff), 0);
if(ret < 0)
{
if(-1 == ret && errno == EINTR)
return nullptr;
else
perror("recv");
}
else if(0 == ret)
{
close(new_fd);
}
else
{
cout << "receive from client: " << buff << endl;
}
if(flag == true)
{
flag = false;
}
pthread_mutex_unlock(&mutex1);
pthread_cond_signal(&cond1);