socket编程中如何实现自动获取本机IP地址和随机获取一个没有占用的端口

来源:互联网 发布:淘宝爆款运营计划表 编辑:程序博客网 时间:2024/06/06 05:23

结构体:
struct sockaddr_in{
  short int sin_family;
  unsigned short int sin_port;
  struct in_addr sin_addr;
  char sin_zero[8];
};该结构体用于指定一个socket的一端【ip+port】

所以local.sin_addr.s_addr是ip地址。

//随机选择一个未被使用的端口号

my_addr.sin_port = 0;

//填入本机IP

my_addr.sin_addr = INADDR_ANY;


作为服务器,你要绑定【bind】到本地的IP地址上进行监听【listen】,但是你的机器上可能有多块网卡,也就有多个IP地址,这时候你要选择绑定在哪个IP上面,如果指定为INADDR_ANY,那么系统将绑定默认的网卡【即IP地址】。

作为客户端,你要连接【connect】到远端的服务器,也是要指定远端服务器的(ip, port)对。
当然,在这种情况下,不可能将IP地址指定为INADDR_ANY,系统会疯掉的。

原创粉丝点击