探讨和请教一个socket的端口绑定问题,编程高手千万不能错过,也许你还没发现这个问题~!
各位专家好!
工作中发现了一个问题这里解释如下:
请大家指教和发表一下自己的观点
我写了一个很简单的socket通信的server程序,大家都知道用了哪些函数:
socket(),bind(),listen()等等,这个时候我的通信socket就开始工作了,
比如我bind(123)端口的话,那么当外边向123端口发信息的时候,我的这个
程序就知道了,ok!现在的问题是: 我如果在建立一个同样的socket通信的
server程序的话,如果我在bind()到123端口的话,我的bind函数就会失败,程序会
提示bind失败,因为第一个通信程序已经bind了该端口,到这里都还很正常!
那么问题如下:
大家都知道windows NT机器有个netbios的139端口,该端口在系统的server启动
后就开始listen了(可以用一个端口扫描程序看得到该端口是正在listen的),
这个时候,如果我做一个socket通信程序bind到139端口的话,我竟然发现我能
bind成功!!!!
所以问题就在这里,就是说为什么可以进行两次bind到139的操作(一次是系统的server
服务启动后,一次是我自己写的server程序bind的),那么我听说windows 中有一个socket的dup功能,可以把本身的socket信息复制到另一个socket套接字中!~
另外需要强调的一点是,我虽然写程序bind到了139成功了,但是当外界和我这个在listen
139端口的程序通信的时候我这个程序并不能收到任何发过来的信息!
请大家指教和探讨!
为什么bind到已经在listening的139端口可以成功?
谢谢大家!