(4) 服务端绑定端口。

端口号范围:1024到65535,低于1024的端口对应着因特网上的一些常见服务。

struct sockaddr {
u_short sa_family;   // 地址族地址族 address family
address family char sa_data[14];

// 14字节的协议地址 up to 14 bytes of direct address
};
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr *PSOCKADDR;
typedef struct sockaddr FAR *LPSOCKADDR;

struct sockaddr_in {
short sin_family;// 地址族
u_short sin_port;// 端口号
struct in_addr sin_addr; // IP地址
char sin_zero[8];// 填充0
};
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in FAR *LPSOCKADDR_IN;

字节顺序转换函数:

htons():"Host to Network Short"
htonl():"Host to Network long"
ntohs():"Network to Host Short"
ntohl():"Network to Host Long"

SOCKADDR_IN m_saAddr;
u_short m_nPort = 20049;// 端口号
ZeroMemory(&m_saAddr, sizeof(m_saAddr));
m_saAddr.sin_family  = AF_INET;
m_saAddr.sin_port= htons(m_nPort); // 如果此值为0,系统将随机选择一个未被使用的端口号
m_saAddr.sin_addr.s_addr = INADDR_ANY;  // 填入本机IP地址
if (bind(m_Socket, (LPSOCKADDR) &m_saAddr, sizeof(m_saAddr)) == SOCKET_ERROR)
{
AfxMessageBox("绑定端口失败!");
}


相关内容