请网络高手进来解答一下,100分侍候! 各位,我现在想做样这一件事情,有两个程序A,B他们侦听同一台机子的同一端口,可以重复绑定地址,但是只有其中一个程序可以收到数据,我现在想如果是A收到数据,能不能发到B侦听的端口呢?A会不会收到自己发送的数据呢?一般这样的两处程序有什么相互SHARE数据呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有两个程序A,B他们侦听同一台机子的同一端口??=========================================我的理解是AB两个程序同时打开一个端口进行侦听。似乎不可能。 端口重用是什么意思?不是两个socket 可以绑定在一个端口而是在使用这个端口的socket close后没有TIME_WAIT的限制 马上就可以用 有两个程序A,B他们侦听同一台机子的同一端口?? --------------------------------------可以的,一个程序用socket,一个用winpcap库 A接收数据,然后发送给B,A、B和另外的程序收发数据协议格式要不一样,如果不符合协议格式就丢弃 一个用TCP,另一个用UDP,可以绑定同一端口,接收数据时指定MSG_PEEK标志,就不会把数据从缓冲区中移除。 在Windows平台和Linux平台下是有差别的。在Win平台下是哪一个进程先监听,则具有优先权,只有当该进程关闭监听,后续进程的监听才生效,并且优先的进程还可以再次监听来抢去accept。只是不影响后起进程已经建立的连接的通讯;Linux平台则是看谁抢到就算谁的。在Winsock2有一个WSADuplicateSocket,可以将已经Accept到的Socket交给子进程去处理通讯(需要相关的权限配置)。 像一些网络监视器,是如何做到的,其中监视器收到以后,其他程序照样可以收到,假如A,B侦听同一端口6666,A收到数据以后,再发送B程序,也是通过这一个端口6666,这样可不可以呢?A会不会收到自己发的数据呢? 又看了下问题,楼主是想端口复用吧,这要求绑定前未使用setsockopt指定SO_EXCLUSIVEADDRUSE独占,设置可复用参数。这样也是只有一个程序能接收数据,所以涉及到自定义协议的判断,不是自己的数据抱的时候,就涉及到端口转发 端口复用后,recv()的参数MSG_PEEK试试。Value Meaning MSG_PEEK Peeks at the incoming data. The data is copied into the buffer but is not removed from the input queue. The function then returns the number of bytes currently pending to receive. 工具是通过arp欺骗,把本该发给别人的数据发给了你,然后你再下发给别人 vc++ mysql 乱码问题 GDI+ 里边关于区域的问题? bitblt(块拷贝)只能在兼容DC间进行吗? 如何解决__try __except所在函数中不能有C++类对象的问题 ? 求助:获取无线网络列表 麻烦高手指点怎么用WINDOWS API编写一个带菜单的空窗口 windows系统编程方面,前台进程和后台进程切换 for循环中设置时间延迟问题 为什么一给分,页面就出错 哪有最新的msdn下载 CFile文件读写 几年前一不小心 成了信息与计算科学专业的学生
=========================================
我的理解是AB两个程序同时打开一个端口进行侦听。似乎不可能。
而是在使用这个端口的socket close后
没有TIME_WAIT的限制 马上就可以用
MSG_PEEK Peeks at the incoming data. The data is copied into the buffer but is not removed from the input queue. The function then returns the number of bytes currently pending to receive.