c++ socket 实现客户端与服务端聊天功能

本文介绍了如何使用C++的socket编程来创建一个简单的客户端与服务器端聊天应用。通过在两端分别设置发送和接收消息的独立线程,实现持续的交互,用户输入'q'可退出程序。完整的代码示例可在CSDN下载。
摘要由CSDN通过智能技术生成

发消息接收消息交给两个不同的线程处理,通过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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值