该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
RT.最近看了一下SOCKET的东西.写了个网络版的贪吃蛇.但是如果连接上了.接收和发送数据都会有问题.跟别人联机了一下.好像掉了数据包.程序会崩掉.但如果自己连接本机的127.0.0.1的IP却不会出现这个问题.
问下.怎么发送和接收数据最稳定.
最后贴上自己写的代码.
接收的函数:
DWORD WINAPI RecvMyMsg(LPVOID lpVoid)
{
// while (!isConnect);
HWND hwnd = (HWND)lpVoid;
Snake os;
while (1)
{
int iBack = recv(m_socket, (char*)&os, sizeof(os), 0);
if (iBack == SOCKET_ERROR )
{
int err = WSAGetLastError();
if (WSAEWOULDBLOCK == err)
{
// MessageBox(hwnd,"没有收到数据","",0);
continue;
}
else if (WSAENETDOWN == err || WSAETIMEDOUT == err || WSAECONNRESET == err)
{
MessageBox(hwnd,"服务器关闭连接","",0);
break;
}
}
if (iBack == 0)
{
MessageBox(hwnd,"客户端关闭连接","",0);
break;
}
PostMessage(hwnd, WM_BLACK, (WPARAM)&os, NULL);
}
return 0;
}
发送的函数:
int SendMyMsg(Snake os)
{
while (!isConnect); //判断是否已经连接成功
int iBack = send(m_socket, (char*)&os, sizeof(os), 0); //os是个结构体
return iBack != SOCKET_ERROR ? 0 : 1;
}