linux socket编程之udp_each_server服务端代码

1创建socket套接字

int socket(int domain, int type, int protocol);

domain:选择你要使用的网络层协议 一般是ipv4,也就是AF_INET

type:选择你要使用的应用层协议,这里我们选择udp,也就是SOCK_DGRAM

成功返回文件描述符,失败返回-1

注意:源代码放在最后面,log是自己写的日志类,这里使用了类进行封装

        //1.创建 Udp Stocket套接字
        _sockfd = socket(AF_INET,SOCK_DGRAM,0);
        if(_sockfd < 0)
        {
            LOG(FATAL,"socket error,%s ,%d \n",strerror(errno),errno);
            exit(SOCKET_ERROR);
        }
        LOG(INFO,"socket create success,sockfd: %d\n",_sockfd);

2填充sockaddr_in结构体

uint16_t htons(uint16_t hostshort);

将端口号从主机序列转成网络序列

in_addr_t inet_addr(const char *cp);

将ip从主机序列转成网络序列 + 字符串风格ip转成点分十进制ip

uint16_t ntohs(uint16_t netshort);

将端口号从网络序列转成主机序列

 char *inet_ntoa(struct in_addr in);

将ip从网络序列转成主机序列 + 点分十进制ip转成字符串风格ip

网络通信:struct sockaddr_in

本地通信:sockaddr_un

16位地址类型表明了他们是网络通信还是本地通信 

16位地址类型:sin_family

16位端口号:sin_port

32位ip地址:sin_addr.s_addr

        //2填充stockaddr_in结构
        struct sockaddr_in local;
        local.sin_family = AF_INET;
        //填充端口号,主机序列转网络序列
        local.sin_port = htons(_port);
        //填充ip,主机序列转网络序列 + 字符串风格ip转成点分十进制ip
        local.sin_addr.s_addr = inet_addr(_ip.c_str());

3将ip地址和端口号与stockfd绑定

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

sockfd:要绑定的socket套接字的文件描述符

struc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值