WinSock API实现UDP协议的详细代码(1)(3)
端口号范围: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("绑定端口失败!");
}
评论暂时关闭