QT 读写线程编写
小熊派:TCP服务器
QT:TCP客户端
环境:Win10 Qt 5.9.8
①pro文件加入 network 和
LIBS += -lpthread libwsock32 libws2_32
②工程目录下加入ws2_32文件 在C盘 window->system32->ws2_32
一、QT实现客户端
新建netWork类,继承object,可以发送信号(也可以不继承,不一定有用)
宏定义:
#define PORT 8888 //端口号
#define IP "192.168.199.xxx" //小熊派开发板的ip
1、定义一个函数进行连接socket的操作
/************************************
函数名称:NetToBearpi()
函数参数:无
函数返回值:无
**********************************/
2、NetToBearpi实现
①在window下使用socket,需要加入:
WORD sockVersion = MAKEWORD(2, 2);
WSADATA data;
if(WSAStartup(sockVersion, &data)!=0)
{
return ;
}
②创建套接字
SOCKET socketfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
③创建结构体
sockaddr_in socketAddr;
memset(&socketAddr,0,sizeof(socketAddr));
socketAddr.sin_family=AF_INET;
socketAddr.sin_addr.s_addr=inet_addr(IP);
socketAddr.sin_port=htons(PORT);
④connect连接
if(::connect(socketfd,(SOCKADDR*)&sockAddr,sizeof(sockAddr))== SOCK_EEOR);
{
cout<<"连接失败"
}
⑤读取服务器传来的数据
char recData[255];//定义字符串数组
int ret=recv(socketfd,recData,255,0);// WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
/*******************************************************************************************************************
recv函数 的实质就是从socket的缓冲区里拷贝出数据 返回值就是拷贝出字节数的大小。
上面定义的载体(revData)大小是255,所以recv的第三个参数最大只能设置为255, 如果设置为大于255的数值,
当执行recv函数时恰好缓冲区的内容大于255, 就会导致内存泄漏,导致ret值小于零,解除阻塞状态。因此这里最好将第三个参数
设置为revData的大小,那么当缓冲区内的数据小于255的时候 只需要执行一次recv就可以将缓冲区的内容都拷贝出来,
但当缓冲区的数据大 于255的时候,就要执行多次recv函数。当缓冲区内没有内容的时候,会处于阻塞 状态,
这个while函数会停在这里。直到新的数据进来或者出现异常。 ************************************************************************/
if(ret>0)
{
recData[ret]=0x00;//正常可以不这么写,为了字符输出需要
printf(recData);
}
⑥传递数据给服务器
string buf="hello world";
const char * sendData;
sendData=buf.c_str();
send(socketfd,sendData,strlen(sendData),0);
(5条消息) c语言socket 断线重连,Windows C语言 Socket编程 client端(客户端)--断线重连版_低调·Smile的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具