服务器 正常, 测试后确认服务器信息已经发回客户端。客户端也已经链接上服务器端,而且可以发出信息。问题是,客户端发送信息给服务器端,服务器端回复信息后,客户端没有任何响应。void CclientDlg::ConnToServer(SOCKET s)
{
WSAAsyncSelect(s,m_hWnd,NET_READER,FD_READ);
WSAAsyncSelect(s,m_hWnd,NET_END,FD_CLOSE);
/* 绑定接收信息 */
core->SetConnection(true); /* 标记已经链接到服务器端 */
}
这段代码是 WSAAsyncSelect 绑定的。当客户端成功链接服务器端后,所执行。 这里面的套接字和句柄都是正确的 (已经测试)。 struct sockaddr_in local; memset(&local, 0, sizeof(local));
local.sin_addr.S_un.S_addr = inet_addr(ip);
local.sin_family = AF_INET;
local.sin_port = htons(port);//监听端口
if(connect(sListen,(sockaddr*)&local,sizeof(local) )!=0)
{
closesocket(sListen);
WSACleanup();
core->bError("无法链接到服务器。");
} core->SetSocket(sListen); /* 为核心设置客户端套接字 */ ::PostMessageW(core->GethWnd(),CLIENT_CONNECTION,0,sListen);
core->GetCe()->SetStage("链接服务器成功,输入账号密码可以登录......");
这段是链接服务器的代码。和服务器一样都是使用AF_INET, SOCK_STREAM模型。奇怪就奇怪于,为什么,WSAAsyncSelect为什么绑定后,服务器端发送信息来,客户端没有任何信息响应。我甚至已经吧客户端当前所拦截的信息全部打印出来,依然也是没有起色
解决方案 »
- listbox控件lbn_SELCHANG_事件?
- 我问个问题, sizeof(int) 是按照cpu来看 ?还是按照系统os和编译器来看?
- 高分求教:编写能适应XP下快速用户切换特性的服务程序的问题
- 关于DLL编译调用的问题(再不安装VC的环境下,VB调用VC生成的DLL)
- [求助]消息映射的问题!
- 强制重启电脑/启动其他的exe文件
- 在AppWizard没有选择静态链接库,此后如何补上?
- 如何将捕获得tcp、ip报文中的汉字显示出来
- VS如何创建无窗口的activex控件
- MFC切分窗口显示两幅位图遇到的几个问题
- win32 SDK学习木马编程的话,除了掌握一些基础SDK知识外还需要学习什么东西?
- 多线程中三行没看懂的代码
rc = WSAAsyncSelect(s, hWnd, wMsg1, FD_READ);
rc = WSAAsyncSelect(s, hWnd, wMsg2, FD_WRITE);
就是说WSAAsyncSelect(s,m_hWnd,NET_END,FD_CLOSE);把 WSAAsyncSelect(s,m_hWnd,NET_READER,FD_READ);给覆盖掉了。