UDP的编程流程

UDP编程流程:

服务器端:socket(),  bind(),  recvfrom()/sendto(),  close();

客户端:socket(),  sendto()/recvfrom(),  close();


以下是各个函数的具体介绍:

首先提一句:linux下一切皆文件,socket也不例外,它是可读、可写、可控制、可关闭的文件描述符。

创建socket

#include<sys/types.h>
#include<sys/socket.h>
int socket(int domain,int type,int protocol);//创建socket
  • domain  表示底层协议族。其中IPv4用PF_INET(Protocol Family of Internet),IPv6用PF_INET6。
  • type 指定服务类型。服务类型主要有SOCK_STREAM(字节流服务)服务和SOCK_DGRAM服务(数据报服务)。对于TCP/IP协议族来说,SOCK_STREAM表示传输层使用TCP协议,SOCK_DGRAM表示传输层使用UDP协议。
  • protocol 在前两个参数构成的协议集合下,再选择一个具体的协议。一般设置为0,表示使用默认协议。

socket()系统调用成功时返回一个socket文件描述符,失败则返回-1并设置errno。

命名(绑定)socket

#include<sys/types.h>
#include<sys/socket.h>
int bind(int sockfd,const struct sockaddr* my_addr,socklen_t addlen);//命名(绑定)socket

bind的作用是将未命名的sockfd文件描述符指向my_addr所指的socket地址。其中socket地址长度由参数addlen指出。

bind成功时返回0,失败则返回-1并设置errno。

其中struct sockaddr是通用的socket地址,而TCP/IP协议族有sockaddr_in和sockaddr_in6两个专用socket地址结构体,它们分别用于IPv4和IPv6,这里我们只介绍sockaddr_in:

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值