首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

网络编程-完成端口-服务器给客户端发消息服务器收到了的有关问题

2012-05-22 
网络编程-完成端口-服务器给客户端发消息服务器收到了的问题先说问题在附上源代码:我服务器在没做发送之前

网络编程-完成端口-服务器给客户端发消息服务器收到了的问题
先说问题在附上源代码:

我服务器在没做发送之前,就是只能接收,完全没任何问题,
我开了20个client给svr发消息都没问题,都能收到,客户端只能发送哪种。
但是当我做了相互后,就是服务器和客户端可以互发消息互相接收消息后,
客户端打开连接正常,发送第一条消息正常,

接下来,服务器给客户端发的消息 客户端貌似都收到了,
但是客户端给服务器发的消息 服务器再也收不到了,
并且,服务器给客户端发的消息 服务器收到了,
这就不对了,对不...

服务器给客户端发的消息 服务器怎么能收到。。。
我这些代码vs10和vs03都能编译通过。

代码里有一点需要说明的是:
服务器创建的2个套接字和客户端连接的套接字的存放形式不一样,
服务器创建的2个套接字是用链表形式存的。
客户端连接的套接字是存在哈希表里的。

希望各位大侠能帮帮我,我整了2晚上,问了1天,实在是无能为力了。谢谢

C/C++ code
--------------------------#include "cCompletePort.h"int main(int _Argc, char **_argv){    WSADATA wsadt;    if(WSAStartup(MAKEWORD(2,2),&wsadt) != 0)    {        assert(0);        return -1;    }    cCompletePort test;    test.WaitThreadWork();    WSACleanup();    system("pause");    return 0;}



由于篇幅过长
我在百度空间里写了这个,
也就是剩下的一部分代码
csdn博客3天内不允许我发文章...
http://hi.baidu.com/wangli071229/blog/item/d38167ef1c75cd16acafd5ae.html

[解决办法]
探讨

太长,没仔细看
关键是每次PostRecv、PostSend要用不同的PERIODATA
不要同时使用一个PERIODATA,要每次新建一个
也就是LPWSAOVERLAPPED这个参数不要共用
C/C++ code
typedef struct sPerHandleData
{
PERIODATA sPerIOData; //这样定义就只能进行一次IO操作,要等……

热点排行