请网络高手进来解答一下,100分侍候!

zhxhaixing 2008-05-26 10:44:47
各位,我现在想做样这一件事情,有两个程序A,B他们侦听同一台机子的同一端口,可以重复绑定地址,但是只有其中一个程序可以收到数据,我现在想如果是A收到数据,能不能发到B侦听的端口呢?A会不会收到自己发送的数据呢?一般这样的两处程序有什么相互SHARE数据呢?
...全文
196 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
bragi523 2009-05-27
  • 打赏
  • 举报
回复
这种机制似乎不行吧
csgdseed 2009-05-27
  • 打赏
  • 举报
回复
试试winpcap
路人乙2019 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rageliu 的回复:]
端口重用是什么意思?

不是两个socket 可以绑定在一个端口
而是在使用这个端口的socket close后
没有TIME_WAIT的限制 马上就可以用
[/Quote].
yekoufeng 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cnzdgs 的回复:]
一个用TCP,另一个用UDP,可以绑定同一端口,接收数据时指定MSG_PEEK标志,就不会把数据从缓冲区中移除。
[/Quote]
这个办法可以尝试.
wolflion 2009-05-26
  • 打赏
  • 举报
回复
进来学习
songtao_01 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhxhaixing 的回复:]
像一些网络监视器,是如何做到的,其中监视器收到以后,其他程序照样可以收到,假如A,B侦听同一端口6666,A收到数据以后,再发送B程序,也是通过这一个端口6666,这样可不可以呢?A会不会收到自己发的数据呢?
[/Quote]
工具是通过arp欺骗,把本该发给别人的数据发给了你,然后你再下发给别人
Wenxy1 2009-05-13
  • 打赏
  • 举报
回复
端口复用后,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.
僵哥 2009-05-13
  • 打赏
  • 举报
回复
我挖
roger52 2008-06-03
  • 打赏
  • 举报
回复
如果只能一个程序接收到数据,那就在接到数据后发送一份数据给对方
zhxhaixing 2008-06-03
  • 打赏
  • 举报
回复
zhxhaixing 2008-05-27
  • 打赏
  • 举报
回复
zhxhaixing 2008-05-26
  • 打赏
  • 举报
回复
像一些网络监视器,是如何做到的,其中监视器收到以后,其他程序照样可以收到,假如A,B侦听同一端口6666,A收到数据以后,再发送B程序,也是通过这一个端口6666,这样可不可以呢?A会不会收到自己发的数据呢?
jameshooo 2008-05-26
  • 打赏
  • 举报
回复
侦听同一协议同一端口是不可能的,要不换协议,要不换端口
僵哥 2008-05-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhxhaixing 的帖子:]
各位,我现在想做样这一件事情,有两个程序A,B他们侦听同一台机子的同一端口,可以重复绑定地址,但是只有其中一个程序可以收到数据,我现在想如果是A收到数据,能不能发到B侦听的端口呢?A会不会收到自己发送的数据呢?一般这样的两处程序有什么相互SHARE数据呢?
[/Quote]
在Windows平台和Linux平台下是有差别的。

在Win平台下是哪一个进程先监听,则具有优先权,只有当该进程关闭监听,后续进程的监听才生效,并且优先的进程还可以再次监听来抢去accept。只是不影响后起进程已经建立的连接的通讯;Linux平台则是看谁抢到就算谁的。

在Winsock2有一个WSADuplicateSocket,可以将已经Accept到的Socket交给子进程去处理通讯(需要相关的权限配置)。
cnzdgs 2008-05-26
  • 打赏
  • 举报
回复
一个用TCP,另一个用UDP,可以绑定同一端口,接收数据时指定MSG_PEEK标志,就不会把数据从缓冲区中移除。
scq2099yt 2008-05-26
  • 打赏
  • 举报
回复
A接收数据,然后发送给B,A、B和另外的程序收发数据协议格式要不一样,如果不符合协议格式就丢弃
greatws 2008-05-26
  • 打赏
  • 举报
回复
有两个程序A,B他们侦听同一台机子的同一端口??

--------------------------------------

可以的,一个程序用socket,一个用winpcap库
aa65433 2008-05-26
  • 打赏
  • 举报
回复
尝试:A程序接收到数据后通知B程序...
rageliu 2008-05-26
  • 打赏
  • 举报
回复
端口重用是什么意思?

不是两个socket 可以绑定在一个端口
而是在使用这个端口的socket close后
没有TIME_WAIT的限制 马上就可以用
zhoujianhei 2008-05-26
  • 打赏
  • 举报
回复
有两个程序A,B他们侦听同一台机子的同一端口??
=========================================
我的理解是AB两个程序同时打开一个端口进行侦听。

似乎不可能。
加载更多回复(8)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧