端口监听? 本帖最后由 VisualEleven 于 2011-01-12 15:42:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 VisualEleven 于 2011-01-12 15:41:56 编辑 本帖最后由 VisualEleven 于 2011-01-12 15:44:05 编辑 单纯的一个listen,如果不进行accept的话,当连接超过listen里设置的数量后就不能再连了 我是一个CListeningSocket从CSocket继承来的,重载了Accpet 用TCP测试工具在我的主机和外网的一个主机测过,没有问题的 用netstat看了下,会不会是用TCP测试工具创建的连接还没有在网关那边关掉呢,显示是CLOSE_WAIT状态 但是即使这样,我用GPRS DTU作为客户端,没有办法连接上。而且,我的客户端都是GPRS DTU,连接到我这边以后,我用什么方式可以把它们区分开呢,本来用的是GetPeerName来获得对方的IP,但现在对方的IP全都是我这边网关的IP啊 请你先理解一下Listen()函数的参数,windows API中的listen()带有两个参数的,第二个参数是一个整形的,表示当连接该socket 的 socket的数量超过该值(将已经调用了accept()函数处理掉的除外)时,连接就会失败。你可以看看unix 网络编程这本书,虽然这本书讲的是在unix下的,但有好多的东西在windows下面也一样适用的。 现在又多出了一个问题,我的客户端都是GPRS DTU,我需要在accept的时候清楚的区分这些GPRS,因为每个GPRS都安装在一个特定的地方,我需要收到消息的时候就能判断出这个GPRS在哪个地方,如果不在通信协议里附加这些信息,我该怎么做呢? 知道每个gprs的ip以及他所在的位置,accept后根据socket来用getpeername得到目标ip SOCKET 打开时绑定的IP要是能出公网的那个网卡的IP,不能用IFNET吧(不能自动选)关键:创建SOCKET时必须绑定到能出公网的IP。 这个不行,不管是哪个GPRS模块,从我这边得到的getPeername都是网关的地址 已经有办法了,因为GPRS DTU在连接上服务器以后会发一包注册包,我可以提取里面的信息,作为这个客户端的Socket ID,而且这个信息是固定的,所以可以在这边数据库中利用此信息作为查询的条件。 下拉框的问题 延时问题! windows mobile下GetRunningObjectTable': identifier not found问题 CArchive反序列化遇未知异常,多方求教无果,请过往大仙儿下凡指点,路过请帮顶,必有分相送 高手请进(特别有请科狐) 很简单问题哦,怎样可以加上SLEEP()函数啊? 一个制作安装程序的问题!如何安装从网上下载的ocx控件! 怎样让对话框在按ctrl+break时关不掉? 一个关于getcurrentdirectory的很奇怪的问题 关闭对话框后出现Debug Assertion Failed!窗口 MFC基于对话框编程中自定义的类中如何访问对话框类的成员变量? MFC 获取本机IP偶尔错误的问题
我是一个CListeningSocket从CSocket继承来的,重载了Accpet
windows API中的listen()带有两个参数的,第二个参数是一个整形的,表示当连接该socket 的 socket的数量超过该值(将已经调用了accept()函数处理掉的除外)时,连接就会失败。
你可以看看unix 网络编程这本书,虽然这本书讲的是在unix下的,但有好多的东西在windows下面也一样适用的。
这个不行,不管是哪个GPRS模块,从我这边得到的getPeername都是网关的地址