我看了你回答的聊天室程序,我也遇到了这个问题,想能不能请教一下? 10

我看了你回答的聊天室程序,我也遇到了这个问题,想能不能请教一下?我的recvfrom总是返回SOCKET_ERROR,调错误代码又说是0,成功执行了这个程序。部分代码:s... 我看了你回答的聊天室程序,我也遇到了这个问题,想能不能请教一下?我的recvfrom总是返回SOCKET_ERROR,调错误代码又说是0,成功执行了这个程序。
部分代码:
struct RECVPARAM//子线程入口函数参数结构体
{
SOCKET sock; //已创建的套接字
HWND hwnd; //对话框句柄
};
//进入子线程之前的代码
RECVPARAM p;
RECVPARAM* pRecvParam;
pRecvParam=&p;
pRecvParam->sock=sListen;
pRecvParam->hwnd=(HWND)this;
//pRecvParam->hwnd=(HWND)IDC_RecvShow;
//创建接收线程
HANDLE hThread= CreateThread(NULL, 0, RecvProc, (LPVOID)pRecvParam, 0, NULL);
//关闭该接收线程句柄,释放其引用计数
CloseHandle(hThread);
//子线程入口函数
DWORD WINAPI C网口通信Dlg::RecvProc(LPVOID lpParameter)
//入口函数,在dlg里设的静态的
{ SOCKET sock_rec=((RECVPARAM*)lpParameter)->sock;//参数
HWND hwnd_rec=((RECVPARAM*)lpParameter)->hwnd;
//delete lpParameter;//防止内存泄露。
SOCKADDR_IN addrFrom;
int len= sizeof(SOCKADDR);
//接收到的信息存储空间
char buf[256];
char tempBuf[300];

while (TRUE)
{
//接收数据
int retval=1000;
retval= recvfrom(sock_rec, buf, 256, 0, (SOCKADDR*)&addrFrom, &len);
if ( SOCKET_ERROR == retval )
{
::MessageBox(0, "接收失败 ",0,0);
//调取错误代码
int error = 0;
TRACE("接收错误: %d \n", (error = WSAGetLastError()));
break;
}
sprintf(tempBuf, "%s 说: %s", inet_ntoa(addrFrom.sin_addr),buf);
::PostMessage(hwnd_rec, WM_RECVDATA, 0, (LPARAM)tempBuf);
}
return true;
}
我能加您qq吗?
展开
 我来答
xueguang77
2011-12-30 · 超过20用户采纳过TA的回答
知道答主
回答量:175
采纳率:0%
帮助的人:59.4万
展开全部
SB!
追问
怎么骂人呀~真是的,本来就不高兴,你是高手就不许人家是新手了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式