网络编程:UDP的socket编程(Linux)


前言

本篇文章介绍UDP的socket编程流程,使用的接口都是Linux操作系统中的接口。这些编程接口可能与Windows操作系统中有些不同。文章中如果发现有错误的地方,可以一起讨论!!!

一、UDP协议

1.简单了解UDP协议

无连接:UDP客户端给服务端发送数据的时候,不需要和服务端先建立连接,而是直接进行发送数据
不可靠:不保证数据是可靠有序到达对端的
面向数据报:UDP数据不管是应用层还是网络层传递,都是整条数据进行交付。

2.网络字节序

数据在内存中进行存储时,有两种存储顺序:大端字节序和小端字节序。
大端字节序:数据的低位存储在高地址
小端字节序:数据的地位存储在低地址
在网络中进行收发数据时,也是需要遵守一定的规则,按照一定的字节序进行数据的组织。
网络字节序:采用的是大端字节序
主机字节序:根据机器本身采用的字节序(小端机器为小端字节序,大端机器为大端字节序)
如果机器的主机字节序为小端字节序,在网络中发送数据时就需要将主机字节序转换为网络字节序,否则发送的数据与接收到的数据就会有差异。
有两个接口可以进行主机字节序与网络字节序之间的转换:
1.主机字节序转换成网络字节序
在这里插入图片描述
2.网络字节序转换成主机字节序
在这里插入图片描述

二、UDPsocket编程

1.编程流程

首先需要服务端与客户端创建套接字,然后进行绑定地址信息,之后就可以进行正常通信了。通信结束需要关闭套接字。
在这里插入图片描述

2.编程接口

①创建套接字(socket)

使用socket函数创建套接字,具体参数含义和返回值内容见下图:
在这里插入图片描述

②绑定地址信息(bind)

使用bind函数对地址信息进行绑定
在这里插入图片描述
struct sockaddr结构体内部信息:
在这里插入图片描述

③发送数据(sendto)

调用sendto函数进行发送数据
在这里插入图片描述

④接收数据(recvfrom)

调用recvfrom函数接收数据
在这里插入图片描述

3.服务端测试

根据编程流程,使用socket函数创建套接字并绑定地址信息

  1 #include<stdio.h>                                                                                                              
  2 #include<iostream>
  3 #include<unistd.h>
  4 //socket编程的头文件
  5 #include<sys/socket.h>
  6 #include<netinet/in.h>
  7 #include<arpa/inet.h>
  8 using namespace std;
  9 
 10 int main()
 11 {
   
 12     int sock_fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);//创建UDP套接字
 13     if(sock_fd < 0)
 14     {
   
 15         perror("socket");
 16         return 0;
 17     }
 18     cout << 
  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程中的TCPUDP是两种常见的传输协议。 TCP(Transmission Control Protocol)是一种基于连接的可靠传输协议。它提供了面向连接、可靠的数据传输服务。在TCP通信中,数据被分割成小的数据块,通过TCP连接按序传输,并且保证数据的可靠性,即使在网络拥塞或数据丢失的情况下也能重新传输丢失的数据。TCP适用于对可靠性要求较高的应用程序,如文件传输、电子邮件和网页浏览。 UDP(User Datagram Protocol)是一种无连接的不可靠传输协议。它提供了一种无序、不可靠的数据传输服务。在UDP通信中,数据以数据包(也称为数据报)的形式发送,不进行连接建立和断开,也不保证数据的可靠性和按序传输。UDP适用于对实时性要求较高、对数据可靠性要求较低的应用程序,如音视频流媒体、在线游戏等。 在Linux中进行TCPUDP网络编程可以使用Socket API。该API提供了一组函数和数据结构,用于创建套接字(socket)、绑定(bind)套接字到特定的IP地址和端口、监听(listen)连接请求、接受(accept)连接、建立连接(connect)、发送(send)和接收(receive)数据等操作。 你可以使用C语言或其他支持Socket API的编程语言来进行Linux网络编程,通过调用Socket API提供的函数来实现TCPUDP通信。在编程过程中,你需要了解TCPUDP的特点、使用套接字创建相应的连接类型、发送和接收数据的方式等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值