网络套接字

udp通信

服务端
1.创建套接字
在内核中创建socket结构体

2.为套接字绑定地址信息
在socket结构体中描述IP地址和端口以及协议信息
为了告诉操作系统,我该发往哪个IP地址,哪个端口信息交给我处理。

3.接收数据
第二步过后,操作系统收到该发往该Ip地址和端口,会将数据放到对应的socket接受消息缓冲区。接受即是从中取出数据

4.发送数据
将数据写入内核中的socket发送消息缓冲区,操作系统选择合适时机发送。

5.关闭套接字

客户端
1.创建套接字

2.为套接字绑定地址信息,将IP地址以及端口号存到socket结构体中,发送的地址信息就是源端地址信息

3.发送数据:将数据放到消息缓冲区中,操作系统选择合适时间发送,若socket没有绑定地址信息,操作系统会选择合适的地址办绑定。

4.接收数据。

5.关闭套接字。

socket接口介绍

1.创建套接字
int socket(int domain , int type, int protocol)
//domain:地址域-确定本次socket使用哪种协议版本进行通信,不同版本之间的地址结构不同,——AF_INET IPV4的网络协议。
//type:套接字类型(流式套接字SOCK_STREAM / 数据报套接字SOCK_DGRAM)
//protocol:协议类型(通常为IPPROTO_TCP/ IPPROTO_UDP)默认为0-流式默认tcp/数据报默认udp返回值。
返回值:文件描述符-非负整数-套接字所有其他接口的操作句柄,失败返回-1。

2.为套接字绑定信息

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

//sockfd:socket的返回值,即创建套接字的操作句柄
//addr:要绑定的地址信息
struct sockddr
{
sa_family_t sin_family;地址域
in_port_t sin_port;端口号
struct in_addr{in_addr_t s_addr}sin_addr;IP地址
}
//len:要绑定的地址信息长度

3.接收数据(接收数据的同时,通过接收得知数据来源,得到发送地址信息)

sszie_t recvfrom(int sockfd , char* buf , int len ,int flag, struct ockaddr* peer_addr , socklen_t addrlen)

//sockfd:创建套接字的操作句柄
//buf:缓冲区,存放需要接收的数据,
//len: 接收数据的长度
//flag:默认为0,为阻塞操作
//peer_addr:接收数据的地址信息
//addlen:需要获取的地址长度,以及实际返回的长度
返回值:成功返回实际收到的长度,失败返回1;

4.发送数据

ssize_t sendto(int sockfd,char* data,int len,int flag,struct sockaddr *peer_addr,socklen_t addrlen)

//sockfd:创建套接字的操作句柄
//data为需要发送的数据首地址
//len:需要发送的长度
//flag:表示阻塞操作的返回值
//peer_add:接收方的地址信息
//addrlen:地址信息长度

5.关闭套接字
int close(int fd)

接口实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值