网络通信编程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命令查看。
相关推荐
weixin_307779133 分钟前
Linux下ClickHouse数据仓库故障系统化诊断脚本
linux·运维·clickhouse·自动化·数据库开发
梦帮科技17 分钟前
Rust+Tauri+EVM:构建下一代内存安全级数字版权(DRM)主权音频网络与跨链金融系统的技术实践与全景架构
网络·安全·架构·rust·区块链·音视频·web3.py
mudtools17 分钟前
HttpUtils:一个编译时生成的声明式 HTTP 客户端框架
网络·网络协议·http·.net
luj_17688 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
吴懿不在8 小时前
某次热身赛re方向wp WORDS 51,500 READ 172 MIN base64,
网络
luj_176811 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
RisunJan11 小时前
Linux命令-rlogin(远程登录)
linux·运维
小林ixn12 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
2603_9547083113 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
青岛前景互联信息技术有限公司14 小时前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能