Q:struct sockaddr_in my_addr;
my_addr.sin_addr.s_addr = INADDR_ANY;
其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”
int opt = 1;
int len = sizeof(opt);
setsockopt(pSockData->so_fd,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,len);
SO_REUSEADDR 为true 就是允许在相同的端口不同的IP地址上创建套接描述字。
这样的目的是根据允许断开前后 监听时使用的IP地址不同。
这样在TCP(UDP) 网络 连接断开之前(TIME_WAIT没结束之前)可以当前空闲的本地IP地址的同一端口重新监听。
我想问的是
1 假如一个程序连续异常断开连接 每次打开和关闭 都再 TIME_WAIT 时间 内完成 这样多次之后当前所有的本地IP都处于TIME_WAIT 时间内,没有空闲的本地IP了,这样端口是不是就无法复用了?
my_addr.sin_addr.s_addr = INADDR_ANY;
其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”
int opt = 1;
int len = sizeof(opt);
setsockopt(pSockData->so_fd,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,len);
SO_REUSEADDR 为true 就是允许在相同的端口不同的IP地址上创建套接描述字。
这样的目的是根据允许断开前后 监听时使用的IP地址不同。
这样在TCP(UDP) 网络 连接断开之前(TIME_WAIT没结束之前)可以当前空闲的本地IP地址的同一端口重新监听。
我想问的是
1 假如一个程序连续异常断开连接 每次打开和关闭 都再 TIME_WAIT 时间 内完成 这样多次之后当前所有的本地IP都处于TIME_WAIT 时间内,没有空闲的本地IP了,这样端口是不是就无法复用了?
2 INADDR_ANY 表示所有地址 那这些所有地址都是那些地址?
A:
1、INADDR_ANY 是由系统帮你填好地址,如果没有两个或两个以上网卡,可以这样用,如果网卡不止一块,最好自己填。
2、一般黑客就是利用TCP三次握手机制,使握手不能完成,进而使系统资源用尽崩溃,利用TIME_WAIT这样的情况不多,当然如果速度够快的话,也会有你所说的情况