网络通信编程UDP/TCP

一、不同体系结构间的互联互通

  1. 通信本质:不同主机上进程间的通信。通过 IP 标识网络中的一台主机,本质上是 32 位的整型数据;通过端口号标识某个进程,本质上是 16 位的整型数据。
  2. 网络模型:主要有 C/S(客户端 / 服务器)、B/S(浏览器 / 服务器)、P2P(对等网络)三种。

二、实现编程

  1. UDP 编程(C/S 模型)

    • 特点:无连接、不可靠。
    • 客户端 :使用socket创建套接字,通过sendto等函数发送数据。
    • 服务器端 :将自己的地址公布出去,使用socket创建套接字,通过bind绑定地址,使用recvfrom接收数据。
    • recvfrom函数:从指定的套接字接收数据,并保存发送方的地址信息。成功时返回接收到的字节数,失败时返回 -1。
    • bind函数:在服务器端将套接字与指定的接口地址关联,用于从该接口接受数据;在客户端可将数据从套接字中取出并从指定接口设备上发送出去。客户端可以省略此函数,由默认接口发送数据。
  2. 基于 TCP 的编程(C/S 模型)

    • 客户端
      • 建立连接 :使用socket创建套接字(相当于买了一部手机),可选的bind操作(相当于插上 SIM 卡),然后使用connect向服务器发起连接请求(相当于拨打电话)。
      • 通信过程 :使用readwrite进行数据读写,最后使用close关闭连接。
    • 服务器端
      • 建立连接 :使用socket创建套接字,通过bind绑定地址,使用listen监听客户端的连接请求,使用accept接听客户端的连接请求(这一步完成后连接就建立好了,可以收发数据)。
      • 通信过程 :使用readwrite进行数据读写,最后使用close关闭连接。
    • TCP 建立连接(三次握手):客户端向服务器发送 "我要和你建立连接" 的请求,服务器回复 "好的,可以建立连接",客户端再回复 "好",完成三次握手建立连接。
    • 断开连接(四次挥手):客户端向服务器发送 "我要和你断开连接" 的请求,服务器回复 "好的,可以断开",服务器再发送 "我也要断开" 的请求,客户端最后回复 "好",完成四次挥手断开连接。
    • connect函数:由客户端使用,向目标主机发起连接请求。参数包括本地套接字id、远程目标主机的地址信息及地址信息长度。成功时返回 0,失败时返回 -1。

三、地址相关操作

  1. 绑定地址:主要针对服务器程序,绑定的是服务器所在电脑的 IP 地址。
  2. 查看地址 :在 Linux 下使用ifconfig命令查看网卡相关信息(包含 IP 地址);在 Windows 下在 cmd 中使用ipconfig /all命令查看。
相关推荐
微露清风2 分钟前
C语言习题讲解-第九讲- 常见错误分类等
c语言·开发语言
j_xxx404_3 分钟前
数据结构:算法复杂度与空间复杂度
c语言·数据结构·算法
养海绵宝宝的小蜗28 分钟前
OSPF综合实验报告册
网络
AI视觉网奇39 分钟前
whisper tokenizer
linux·运维·服务器
NotStrandedYet1 小时前
信创国产Linux操作系统汇总:从桌面到服务器,百花齐放
linux·信创·国产化
特种加菲猫2 小时前
从文件到文件描述符:理解程序与文件的交互本质
linux·笔记
懋学的前端攻城狮2 小时前
深入浅出Linux-01:系统化掌握基础操作
linux·后端
好好先森&3 小时前
C语言:冒泡排序
c语言·数据结构·算法·遍历·冒牌排序
孙克旭_3 小时前
day064-kodbox接入对象存储与配置负载均衡
linux·运维·阿里云·负载均衡
李永奉3 小时前
C语言-字符串(定义)、字符串函数(strlen、strcat、strcpy、strcmp、strlwr、strupr)
c语言·开发语言·算法