网络通信编程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命令查看。
相关推荐
kebidaixu7 小时前
BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
linux
果丁智能7 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
wp123_17 小时前
射频前端无源器件观察:Coilcraft WBC1-1TLC vs TONEVEE WBT1-1CT 国产与进口巴伦变压器的技术博弈
网络
映翰通朱工9 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
天南散修9 小时前
MT7916 BA流程
网络·驱动开发·wifi·802.11
玖玥拾9 小时前
C/C++ 基础笔记(十三)继承
c语言·c++·继承
Yang96119 小时前
多功能一体化,成都鼎讯 LDMN-JM1 满足石油煤矿设备检定与训练需求
网络·能源
谢平康9 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠9 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
睡不醒男孩03082310 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup