windows网络编程-结构体说明



1、sockaddr_in
struct sockaddr_in {
        short   sin_family;
        u_short sin_port; // 端口
        struct  in_addr sin_addr; // IP地址,long类型,4字节
        char    sin_zero[8];
};
struct in_addr {
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;


2、sockaddr. 与sockaddr_in大小一致,含义类似
struct sockaddr {
        u_short sa_family;              /* address family */
        char    sa_data[14];            /* up to 14 bytes of direct address */
};


3、端口转换
htons,htonl:本地转网络,就是小端法转大端法,字节反序,比如0x1234转换后就是0x3412
ntohs,ntohl:反向转换

4、ip转换
inet_ntoa:long转换成stirng
inet_addr:string转换成long
实现,比如long为0x1183120a,网络到本地都需要反序一下:0x0a.0x12.0x83.0x11即:10.18.131.17
反之亦然

网络使用大端法,windows操作系统本地使用小端法

5、fd_set
#define FD_SETSIZE      64
typedef struct fd_set {
        u_int   fd_count;               /* how many are SET? */
        SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
} fd_set;
FD_SET(sock_tcp_listern_, &fd_socket);

#define FD_SET(fd, set) do { \
    if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) \
        ((fd_set FAR *)(set))->fd_array[((fd_set FAR *)(set))->fd_count++]=(fd);\
看得出来FD_SET比较简单,就是将socket赋值给fd_array,按照数组最低位赋值


6、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值