Windows学习记录之网络编程sockaddr_in结构体

一、服务器绑定函数需要使用此结构体。

比如:

//绑定地址
bool CListenSocket::Bind(UINT uPort)
{
  sockaddr_in SocketAddr;
  ::memset(&SocketAddr,0,sizeof(SocketAddr));
  SocketAddr.sin_family=AF_INET;
  SocketAddr.sin_addr.s_addr=INADDR_ANY;
  SocketAddr.sin_port=htons(uPort);
  return (::bind(m_hSocket,(SOCKADDR*)&SocketAddr,sizeof(SocketAddr))!=SOCKET_ERROR);
}

填充这个结构体我们通常只关心以上三个参数,特别是IP地址和端口号。IP地址的赋值有多种方式:

(1)SocketAddr.sin_addr.s_addr=INADDR_ANY;默认为本机IP地址

(2)SocketAddr.sin_addr.s_addr = inet_addr(inet_ntoa(*(struct in_addr *)p->h_addr_list[0]));如果本机有几个IP地址,以获取到的第一个IP地址为服务器地址

(3)SocketAddr.sin_addr.s_addr = inet_addr(“192.168.2.183”);常用的方法,以字符串设置IP地址

二、服务器accept函数接收到连接以后解析客户端信息需要用到这个结构体

比如:

NewConnection = accept(ListeningSocket, (SOCKADDR *) &ClientAddr,&ClientAddrLen)
printf("We successfully got a connection from %s:%d.\n",inet_ntoa(ClientAddr.sin_addr), ntohs(ClientAddr.sin_port));

我们通常接受到客户端连接以后需要解析IP和端口号


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值