Linux网络协议.之 tcp,udp,socket网络编程(二).之tcp,udp的区别

本文介绍了Linux环境下UDP网络编程的主要流程,包括服务器端和客户端的步骤。服务器端涉及建立套接字、绑定端口、接收和发送数据,客户端则涉及套接字建立、设置目标地址、发送和接收数据。通过示例代码展示了如何创建UDP套接字,并强调了UDP协议与TCP协议在面向连接和数据传输上的区别。
摘要由CSDN通过智能技术生成

原文链接:https://blog.csdn.net/lell3538/article/details/53335472
想写一篇TCP,UDP通信的区别,盗用了作者的关于api介绍,和一张图,对其不足之处改进,加自己的经验。

1、UDP网络编程主要流程
UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。框图如图1.3所示

UDP协议的服务器端流程
服务器流程主要分为下述6个部分,即建立套接字、设置套接字地址参数、进行端口绑定、接收数据、发送数据、关闭套接字等。
(1)建立套接字文件描述符,使用函数socket(),生成套接字文件描述符。
(2)设置服务器地址和侦听端口,初始化要绑定的网络地址结构。
(3)绑定侦听端口,使用bind()函数,将套接字文件描述符和一个地址类型变量进行绑定。
(4)接收客户端的数据,使用recvfrom()函数接收客户端的网络数据。
(5)向客户端发送数据,使用sendto()函数向服务器主机发送数据。
(6)关闭套接字,使用close()函数释放资源。UDP协议的客户端流程

UDP协议的客户端流程
UDP协议的客户端流程分为套接字建立、设置目的地址和端口、向服务器发送数据、从服务器接收数据、关闭套接字等5个部分。流程如下:
(1)建立套接字文件描述符,socket();
(2)设置服务器地址和端口,struct sockaddr;
(3)向服务器发送数据,sendto();
(4)接收服务器的数据,recvfrom();
(5)关闭套接字,close()。

在这里插入图片描述
(1) int socket(AF_INET, SOCK_DGRAM, 0);
创建udp socket,返回套接字描述符,UDP协议建立套接字的方式同TCP方式一样,使用socket()函数,只不过协议的类型使用SOCK_DGRAM,而不是SOCK_STREAM。UDP不是面向链接的,无需回复消息,发送者无需等待接收者的消息,而TCP是面向连接的,面向流。需要等待回复消息,如果在超时时间段未收到回复消息,将重复发送消息,如果不成功,将断开网络连接。

如果为了测试代码,可以按作者的写,仅仅为了测试学习而已,
一、server.c

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
 
#define MYPORT 8080
 
 
#define ERR_EXIT(m) \
    do {
      \
    perror(m); \
    exit(EXIT_FAILURE); \
    } while (0)
 
void echo_ser(int sock)
{
   
    char recvbuf[1024] = {
   0};
    struct sockad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值