网络编程中如何设置服务器监听IP
2014-09-14 00:01
441 查看
在使用socket编写服务器程序时,设置服务器绑定的sockaddr_in结构往往会困扰很多同学,sockaddr_in结构中sin_famliy和sin_port(注意要使用htons转换为网络序)就不说了,相信大家已知道。sin_addr是要设置的监听地址。sin_addr类型为:
struct in_addr {
in_addr_t s_addr;
};
这里有几个常用的值:
(1)sin_addr.s_addr = INADDR_ANY;(0x00000000)
(2)sin_addr.s_addr = INADDR_NONE;( 0xffffffff)inet_addr("255.255.255.255")
(3)sin_addr.s_addr = INADDR_LOOPBACK;(0x7f000001)inet_addr("127.0.0.1")
(4)sin_addr.s_addr = inet_addr("192.168.1.211");(192.168.1.211是本地eth0的ip地址)
(5)sin_addr.s_addr = inet_addr("192.168.1.210");(192.168.1.211是本地eth1的ip地址)
第一个值将监听IP设置为0,表示客户端发往本地任意ip上该端口的数据包都可以被服务器接收到。
第二个值将监听IP设置为广播地址,实验发现可以设置成功,但不知道有啥用?请各位大神指教。
第三个值将监听IP设置为本地环回地址,表明该服务仅用于本地socket通信,并且通信数据包不经过网卡,即使不连接网线也可以向127.0.0.1的监听端口发送数据包。
第四、五个值表示将监听IP设置为本地网卡上的IP。
ps:localhost、127.0.0.1和192.168.1.211的区别:localhost是本地主机名,/etc/hosts文件可以设置IP和localhost的对应关系;127.0.0.1是本地环回地址,和本地环回地址通信不经过物理网卡,因次即使不连接网络,127.0.0.1的数据包也可以发送和接收;192.168.1.211是本地网卡IP地址,网卡需上电才可以进行通信。
struct in_addr {
in_addr_t s_addr;
};
这里有几个常用的值:
(1)sin_addr.s_addr = INADDR_ANY;(0x00000000)
(2)sin_addr.s_addr = INADDR_NONE;( 0xffffffff)inet_addr("255.255.255.255")
(3)sin_addr.s_addr = INADDR_LOOPBACK;(0x7f000001)inet_addr("127.0.0.1")
(4)sin_addr.s_addr = inet_addr("192.168.1.211");(192.168.1.211是本地eth0的ip地址)
(5)sin_addr.s_addr = inet_addr("192.168.1.210");(192.168.1.211是本地eth1的ip地址)
第一个值将监听IP设置为0,表示客户端发往本地任意ip上该端口的数据包都可以被服务器接收到。
第二个值将监听IP设置为广播地址,实验发现可以设置成功,但不知道有啥用?请各位大神指教。
第三个值将监听IP设置为本地环回地址,表明该服务仅用于本地socket通信,并且通信数据包不经过网卡,即使不连接网线也可以向127.0.0.1的监听端口发送数据包。
第四、五个值表示将监听IP设置为本地网卡上的IP。
ps:localhost、127.0.0.1和192.168.1.211的区别:localhost是本地主机名,/etc/hosts文件可以设置IP和localhost的对应关系;127.0.0.1是本地环回地址,和本地环回地址通信不经过物理网卡,因次即使不连接网络,127.0.0.1的数据包也可以发送和接收;192.168.1.211是本地网卡IP地址,网卡需上电才可以进行通信。
相关文章推荐
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 如何编程设置本机IP地址?
- JBOSS相关 如何设置JBOSS通过IP网络访问,如何自动启动/关闭JBoss
- 如何在Ubuntu 14.04上利用Keepalived与Floating IP设置高可用性Web服务器
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 网络编程中如何为I/O操作设置超时
- 网络编程中如何设置连接超时
- 如何设置jboss通过IP网络访问
- 服务器编程心得(四)—— 如何将socket设置为非阻塞模式
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- Apache服务器虚拟主机设置问题-如何使通过IP访问为默认的apache页面 <转载>
- 使用Windows操作系统的客户端如何设置NTP网络服务器
- 如果客户机器无法从DHCP服务器中获取IP地址那么Windows Server 2003客户机器将会如何处理自己的TCP/IP设置
- 如何为Linux CentOS服务器设置静态ip地址(来源于网络)
- 如何编程实现修改本机的IP地址DNS服务器等设置
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 更改网络ip后如何重新配置Oracle数据库监听
- 2015/12/14 Python网络编程,TCP/IP客户端和服务器初探
- 如何设置让外网通过路由器IP加端口号访问到局域网一台Web服务器