各位大牛,我需要实现一个用QT中的QSocket库编写的客户端与用基本SOCKET编写的服务器进行数据发送和接收,遇到了一些问题,希望能帮助我解决一下。
我的QT中的代码
void Thread::sendMessage()
{
QTcpSocket *clientConnection = tcpSocket;
connect(clientConnection,SIGNAL(disconnected()),clientConnection,SLOT(deleteLater()));
clientConnection->write("bbbb\0");
}
我的服务器端的代码
while(1)
{
sockcon = accept(tsock_fd,(struct sockaddr *)&from,&len);
char recvbuf[100];
char sendbuf[100];
send(sockcon," HELLO",strlen(" HELLO")+1,0);
recv(sockcon,recvbuf,100,0);
printf("%s\n",recvbuf);
}
遇到的问题是
1、我接受客户端发送来的数据的时候,数据不仅包括了我所发的数据,还有一些多余的字符。而且,如果我之前发送了一串更长的数据比如“ABCDE”,如果第二次发送的数据是“123”的时候,服务器接受到的数据是“123DE”再加上之后的乱码。
2、服务器中我的每个SOCKET是通过线程建立的,线程是在界面的主进程中运行的,我在主线程中有一个消息响应函数,就是点击一个按钮就运行线程中的一个函数,但问题是,我如果直接运行两遍函数,可以接受到2次数据,但是如果单击两次按钮,却无法实现接受2次数据的功能。
希望有大牛能帮忙解决一下,小弟我感激不尽。