socket编程 recv()问题
用recv()接收数据时,总是出现如果后一次接收的数据小于前一次的,便出现前面是新的数据,然后新的数据后面却还接这前一次的数据,比如前一次接收的是“这是第一次的数据”,第二次接收的本应该是“第二次”,但是现实出来的却是“第二次一次的数据”,调试过发送过来的数据没问题,接收的是一个线程,代码如下:
DWORD WINAPI CChatClientDlg::recvThread(LPVOID lpparameter){
SOCKET srvSocket=((RECVPARAM *)lpparameter)->socket;
HWND hwnd=((RECVPARAM *)lpparameter)->hwnd;
delete lpparameter;
int ret=0;
char recvBuf[MAX_PATH];
//Receive message from server
while(true){
ret=recv(srvSocket,recvBuf,MAX_PATH,0);
if(ret == 0 || ret == SOCKET_ERROR){
break;
}
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)recvBuf);
}
return 0;
}
DWORD WINAPI CChatClientDlg::recvThread(LPVOID lpparameter){
SOCKET srvSocket=((RECVPARAM *)lpparameter)->socket;
HWND hwnd=((RECVPARAM *)lpparameter)->hwnd;
delete lpparameter;
int ret=0;
char recvBuf[MAX_PATH];
//Receive message from server
while(true){
ret=recv(srvSocket,recvBuf,MAX_PATH,0);
if(ret == 0 || ret == SOCKET_ERROR){
break;
}
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)recvBuf);
}
return 0;
}
...全文
相关推荐
python网络编程调用recv函数完整接收数据的三种方法
本文主要介绍了python网络编程调用recv函数完整接收数据的三种方法。具有很好的参考价值,下面跟着小编一起来看下吧
Linux下socket编程[代码]
本文介绍了Linux下的socket编程基础,包括socket的概念、常用接口函数及其使用方法。socket是一种进程间通信机制,支持同一主机或跨网络的不同主机间的通信。文章详细讲解了socket()、bind()、listen()、accept()、connect()、send()、recv()和close()等核心函数的功能和参数,并提到在实际编程中还需处理错误、异常以及地址和字节序转换等问题。通过本文,读者可以快速掌握Linux下socket编程的基本知识。
Loadrunner基于socket编程
loadrunner socket的详细说明。socket总结。
windows的阻塞和非阻塞Socket编程
NULL 博文链接:https://daojin.iteye.com/blog/720402
C语言SOCKET编程指南
socket通信的基本原理,使用c语言在Linux环境下进行socket编程基本方法与实现


