请问WinSocket能实现多进程绑定同一个IP和端口吗?

fullsail 2004-06-23 04:58:26
UNIX下是可以的。
按照UNIX网络编程的说法UDP应该是肯定的,但我今天才知道TCP也可以?
但是我再Windows(Win2000)下测试都不成功,请问那位做过这样的测试,或者了解是否可以请告诉我。
主要参数就是: SO_REUSEADDR
...全文
472 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
fullsail 2004-07-29
  • 打赏
  • 举报
回复
没有最满意的答案。但是结帖了。
fullsail 2004-07-13
  • 打赏
  • 举报
回复
如果绑定同一个端口,可以使用多进程处理。这样就可以保证负荷分担。
fullsail 2004-06-30
  • 打赏
  • 举报
回复
用的是SO_REUSEADDR
5j4m 2004-06-30
  • 打赏
  • 举报
回复
为什么要IP地址(简称IP)?为什么要端口?

IP的目的是用来标识网上的主机的;
端口的目的是用来区分同一主机上的不同进程的;

多个进程在一台机器上共用一个端口,那可能要通过IPC来辅助实现,这样已经没有什么意义了。
sharkhuang 2004-06-26
  • 打赏
  • 举报
回复
SO_REUSEADDR可以的 还有SO_REUSEPORT
NewKUN 2004-06-25
  • 打赏
  • 举报
回复
学习了
fullsail 2004-06-25
  • 打赏
  • 举报
回复
答复各位,
UINX 下的代码其是先创建socket 绑定IP和Port,然后再fork多个子进程的。好像TCP和UDP都可以这样。

但是Windows下我从来没有成功过。
snhanwei 2004-06-25
  • 打赏
  • 举报
回复
严重关注
darkstar21cn 2004-06-24
  • 打赏
  • 举报
回复
我在Windows和Linux尝试过了,都不行
flyerlxg 2004-06-24
  • 打赏
  • 举报
回复
学习学习!
antijpn 2004-06-24
  • 打赏
  • 举报
回复
Windows里面好像不允许吧?除非你通过其他手段,譬如中间层,加入一个新程序监控Socket,然后把内容使用进程间通讯转发给其他的进程才行
pacman2000 2004-06-24
  • 打赏
  • 举报
回复
呵呵,说错了,如果已经有进程bind上了,而且是正常状态下是不行的。
SO_REUSEADDR只是在端口处于结束状态时能立即被重新使用,而不用等待TIME_WAIT结束。
qwertasdfg123 2004-06-24
  • 打赏
  • 举报
回复
多进程绑定一个端口。
考虑。。。。。
peter9606 2004-06-24
  • 打赏
  • 举报
回复
我做的项目 不能的!
client是 winsock不行
server是 unix 也不行!
tsingdao 2004-06-24
  • 打赏
  • 举报
回复
windows下不可以的,tcp
apache和iis不能共享80,还有好多实例,除非用hook,否则应该不行
boxban 2004-06-24
  • 打赏
  • 举报
回复
UNIX下是可以的。??!
严重怀疑!!!能否给个例子
pacman2000 2004-06-24
  • 打赏
  • 举报
回复
unix下是可以的,但是winsocket不知道它是怎么做的啊,不熟悉。
fullsail 2004-06-24
  • 打赏
  • 举报
回复
200分的问题没有人理会?
本文章将介绍如何使用RawSocket(原始套接字)开发网络嗅探器: 首先我们得了解什么是套接字,这个我就不多说,自己百度,百度百科比我说的好。 那么什么又是原始套接字呢,常用的套接字分为 SOCK_STREAM(流套接字) 用于TCPXY通讯。 SOCK_DGRAM(数据报套接字) 同于UDPXY通讯。 那么原始呢,他则是和名字一样原始套接字;举例:要想用流套接字进行一次TCP的发包,那么直接连接上对方服务器然后用Send就可以发送指定的内容,但其实发送的数据并不止你的那些内容,有一些东西是流套接字会给你自动补上的。TCP是属于IPXY的一个子XY,那么要发送一个TCP数据包就得加上(以太网XY报头这个先不提),IPXY的报头,和TCPXY报头,这些东西流套接字都会帮你处理,而原始套接字则不会(当然也可以设置让原始套接字构造IP报头)。原始套接字他有更多的用途,但相对来说也比流套接字或数据报套接字麻烦。 原始套接字还可以设置成允许接收本地所有的套接字数据。那么我们就利用这个功能来做嗅探器! 首先:1.使用  WSAStartup (合并短整数 (2, 2), WSADATA)  来初始化Winsocket服务 其参数有2个  第一个 (短整数型/双字节型):wVersionRequired  这个参数表明使用的winsock版本号,高位指定修订版本号,低位指定主版本号。第二个参数 WSADATA类型 用于接收Winsocket细节东西,咱不用管它。 //下面就不说那么详细了,源码里面全是注释,自己看。 2.然后使用socket (#AF_INET, #SOCK_RAW, #IPPROTO_IP)  来创建一个套接字   第一个参数应该是表明Internet地址格式反正只能固定这个,仅仅支持这个  参数2:表明要创建的是一个原始套接字,参数3:指定IPXY  IPXY包括其子XY TCP UDP 等。成功返回套接字句柄 3.  bind (s, addr, sizeof (addr))  将套接字绑定至指定网卡,参数1=套接字句柄    参数2为一个addr结构的值,该值表明要绑定的网卡IP端口号 4.  ioctlsocket (Socket, 2550136833, 1) 将套接字的模式改变为允许接收所有数据 顺利完成上面的操作后咱就可以用Recv来接收数据包了,只要不断的调用Recv就OK。

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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