基于socket网络编程技术实现TCP和UDP的流程详解及实例

具体函数讲解太多,根据程序自行分析。

可以参考这篇文章:

https://blog.youkuaiyun.com/qq_41687938/article/details/119102328?spm=1001.2014.3001.5501

https://blog.youkuaiyun.com/weixin_42193813/article/details/105666316

目录

一、socket

1.1 socket概述

1.2 socket接口简介

1.3 Linux系统使用socket过程

二、基于socket的TCP通信

2.1 基于socket技术的TCP通信流程

2.2 基于socket技术的TCP通信流程框图

2.3 TCP socket编程实例

2.3.1 服务端(service.c)

2.3.2 客户端(client.c)

三、基于socket的UDP通信

3.1  基于socket技术的UDP通信流程框图

3.2  基于socket技术的UDP通信流程

3.2.1 服务器流程主要分为下述6个部分。

3.2.2 UDP协议的客户端流程

3.3 UDPSocket客户服务器通信实例

3.3.1 服务端(service.c)

3.3.2 客户端(client.c)

3.4 UDP编程注意:


一、socket

1.1 socket概述

socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

1.2 socket接口简介

socket():创建socket

bind():绑定socket到本地地址和端口,通常由服务端调用

listen():TCP专用,开启监听模式

accept():TCP专用,服务器等待客户端连接,一般是阻塞态

connect():TCP专用,客户端主动连接服务器

send():TCP专用,发送数据

recv():TCP专用,接收数据

sendto():UDP专用,发送数据到指定的IP地址和端口

recvfrom():UDP专用,接收数据,返回数据远端的IP地址和端口

close():关闭socket

1.3 Linux系统使用socket过程

在Linux下进行程序运行的方法:(假设已经编写好服务端程序(service.c),和客户端程序(client.c))

(需要开启两个终端)

1. 先分别对两个文件进行编译(分别执行以下两条命令)

gcc service.c -o service
gcc client.c -o client

2. 然后先运行服务器端

./service

3.  再在另一个终端中运行客户端

./client

4. 执行完成!

二、基于socket的TCP通信

2.1 基于socket技术的TCP通信流程

服务端(被动连接,需创建自己的地址信息)

创建一个套接字 ———socket()
绑定IP地址、端口等信息到socket上——bind()
监听套接字——listen()
等待客户端的连接请求——accept()
发送、接收数据——send()和recv(),或者read()和write()
关闭网络连接——close()

客户端

创建一个套接字——socket()
连接服务器——connect()
接收、发送数据——send()和recv(),或者read()和write()
关闭网络连接——close()

2.2 基于socket技术的TCP通信流程框图

2.3 TCP socket编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子木呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值