socket 客户端接收数据不全!~
如题:
我是使用异步事件 进行接收数据的!请哪位老大指点下,如何才能接受全部的数据!接受步骤如下!
我是使用异步事件 进行接收数据的!请哪位老大指点下,如何才能接受全部的数据!接受步骤如下!
void CMYDlg::wss()//给服务端发送数据
{
tjz();
char sendText[100];
int numsnt,status;
sprintf(sendText,"WSS:%s$%s$%s",uname,city,Sb);
//MessageBox(sendText);
numsnt=send(ClientSock2, sendText, strlen(sendText) + 1, NO_FLAGS_SET);
if (numsnt!= (int)strlen(sendText)+1)
{
// MessageBox("ERROR: Connection terminated!","aasasa",MB_OK);
//status=closesocket( ClientSock2);
if (status == SOCKET_ERROR)
// MessageBox("ERROR: closesocket unsuccessful!","aa",MB_OK);
//status=WSACleanup();
closesocket( ClientSock2);
// if (status == SOCKET_ERROR)
// MessageBox("ERROR: WSACleanup unsuccessful!","aa",MB_OK);
return ;
}
//MessageBox(sendText);
else
{
if(WSAAsyncSelect(ClientSock2, m_hWnd, NETWORK_EVENT, FD_CLOSE | FD_READ ) == SOCKET_ERROR)
{
// MessageBox("注册网络异步事件失败!");
WSACleanup();
}
}
//MessageBox("异步成功");
}
void CMYDlg::OnNetEvent(WPARAM wParam, LPARAM lParam)
{
int iEvent1 = WSAGETSELECTEVENT(lParam);
//调用Winsock API函数,得到发生此事件的客户端套接字
SOCKET CurSock= (SOCKET)wParam;
switch(iEvent1)
{
case FD_READ: //网络数据包到达事件
OnReceive( CurSock);
break;
case FD_CLOSE: //客户端断开事件
OnClose( CurSock);
break;
default: break;
}
}
void CZKDlg::OnReceive(SOCKET CurSock)
{
try
{
char recvText[40480];
int numrcv;
Sleep(500);
numrcv=recv(ClientSock2, recvText, 40480,0);
if ((numrcv == 0) || (numrcv == SOCKET_ERROR))
{
//MessageBox("ERROR: Connection terminated!","aa",MB_OK);
status=closesocket(ClientSock2);
if (status == SOCKET_ERROR)
//MessageBox("ERROR: closesocket unsuccessful!","aa",MB_OK);
status=WSACleanup();
//if (status == SOCKET_ERROR)
// MessageBox("ERROR: WSACleanup unsuccessful!","aa",MB_OK);
}
recvText[numrcv]='\0';//这里接收到得 数据 有的时候不全,请问哪位老大能告诉如何修改接收的代码能使数据完全接收!
//MessageBox(recvText);
}
...全文
相关推荐
利用socket连续发送与连续接收数据
刚刚学习socket的时候编写的程序,可以实现客户端连续向服务器发送三个数据,服务器端连续接受三个数据并返回给客户端处理结果
Java Socket通信(一)之客户端程序 发送和接收数据
对于Socket通信简述,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容,Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容
Asp.net Socket客户端(远程发送和接收数据)
代码如下:/*************************************** * 对象名称: SocketObj * 功能说明: 远程发送与接收 * 试用示例: * using EC; //引用空间名 * string url = “218.75.111.74”; // URL也可以是(http://www.baidu.com/)这种形式 * int port = 8000; //端口 * string SendStr = “domainname\n”; //组织要发送的字符串 * SendStr += “check\n”; * SendStr += “entityname:do
Android笔记:Socket客户端收发数据
http://www.cnblogs.com/shaocm/p/3528346.html找了很久在这个大神的博客里找到的,现在与大家分享
全AIR 的 Socket通信(air服务端、air客户端)
全AIR 的 Socket通信,air服务端、air客户端,没有用到其他后台语言


网络编程
