首页/新闻资讯/正文详情

让程序 “联网“!TCP、UDP、HTTP 一次讲透,手写聊天程序和爬虫接口

发布时间:2026/11/5 1:56:41 来源:云帆数科 栏目:资讯中心
让程序 “联网“!TCP、UDP、HTTP 一次讲透,手写聊天程序和爬虫接口
前面写的程序都是 自己跟自己玩。真实的应用要联网—— 浏览器请求网页、聊天软件收发消息、爬虫抓数据。这篇老哥带你打通网络编程。一、网络编程三要素进程之间要通信靠三个东西协议定义通信规则数据格式、传输顺序、错误检查IP网络中每台计算机的唯一标识靠它找到计算机端口标识进程的逻辑地址靠它找到计算机里指定的进程。二、TCP/IP 协议与分层模型TCP/IP是互联网最常用的协议族得名于两个核心协议TCP传输控制协议和IP网际协议。理解网络用五层模型TCP/IP 四层 把网络接口层拆成数据链路层和物理层应用层 HTTP、FTP、SMTP 等 传输层 TCP、UDP 网络层 IP 数据链路层 物理层三、IP标识设备、寻址用ipconfigWindows/ifconfigLinux查看本机 IP。公网 IP任何地方能访问私网 IP只能在局域网内访问范围10.0.0.0 ~ 10.255.255.255172.16.0.0 ~ 172.31.255.255192.168.0.0 ~ 192.168.255.255127.0.0.1是回环地址代表本机。IPv432 位如192.168.10.2IPv6128 位如2001:db8:0:1234:0:567:8:1。IPv4 地址 2011 年已耗尽IPv6 地址多到 每粒沙子都能有 IP。四、端口找到进程端口号范围0~65535公认端口0~1023绑定系统服务80HTTP、21FTP、22SSH、3306MySQL、3389RDP动态端口1024~65535进程动态申请关闭即释放。用netstat -ano查看端口信息。五、socket进程通信的工具socket套接字是进程间通信的工具。Python 用socket模块创建import socket # TCP 流式套接字 tcp_socket socket.socket(familysocket.AF_INET, typesocket.SOCK_STREAM) # UDP 数据报套接字 udp_socket socket.socket(familysocket.AF_INET, typesocket.SOCK_DGRAM)AF_INET用于 Internet 进程间通信SOCK_STREAMTCP 流式SOCK_DGRAMUDP 数据报。六、UDP不可靠但快UDP简单、面向数据报、不保证可靠发出去就不留备份。适合对时效要求高、能容忍丢包的场景流媒体、在线游戏。UDP 服务端import socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_socket.bind((127.0.0.1, 8080)) # 绑定 IP 和端口 while True: recv_data, client_addr udp_socket.recvfrom(1024) # 接收 print(f{client_addr[0]}:{client_addr[1]} {recv_data.decode(utf-8)}) udp_socket.sendto(你好.encode(utf-8), client_addr) # 发送 udp_socket.close()UDP 客户端import socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True: try: server_ip, server_port 127.0.0.1, 8080 udp_socket.sendto(input(f{server_ip}:{server_port} ).encode(utf-8), (server_ip, server_port)) recv_data, client_addr udp_socket.recvfrom(1024) print(f{client_addr[0]}:{client_addr[1]} {recv_data.decode(utf-8)}) except KeyboardInterrupt: break udp_socket.close()先跑服务端再跑客户端就能聊天了。七、TCP可靠但需连接TCP面向连接、可靠、基于字节流分建立连接→数据传送→终止连接三阶段用序号、校验和、确认重传等机制保证可靠。适合网页、文件传输等不能丢数据的场景。TCP 服务端多了listen和acceptimport socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_socket.bind((127.0.0.1, 8080)) tcp_socket.listen(2) # 设置监听 client_socket, client_addr tcp_socket.accept() # 等待连接 while True: recv_data client_socket.recv(1024) print(f{client_addr[0]}:{client_addr[1]} {recv_data.decode(utf-8)}) client_socket.send(你好.encode(utf-8)) tcp_socket.close()TCP 客户端多了connectimport socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_socket.connect((127.0.0.1, 8080)) # 连接服务器 while True: try: tcp_socket.send(input(127.0.0.1:8080 ).encode(utf-8)) recv_data tcp_socket.recv(1024) print(f127.0.0.1:8080 {recv_data.decode(utf-8)}) except KeyboardInterrupt: break tcp_socket.close()八、HTTP网页的通信语言HTTP超文本传输协议是应用层协议万维网数据通信的基础。客户端发请求服务器返回响应。请求消息四部分请求行方法 URI 版本、请求头、空行、请求体。响应消息四部分状态行版本 状态码 状态信息、响应头、空行、响应体。八种请求方法GET读资源、HEAD只要元信息、POST提交数据、PUT上传内容、DELETE删除资源、TRACE、OPTIONS、CONNECT。五类状态码1xx信息100 继续、101 切换协议2xx成功200 OK、202 已接受3xx重定向301 永久移动、302 临时移动、304 未修改4xx客户端错误400 语法错误、403 拒绝、404 找不到、405 方法被禁止5xx服务器错误500 内部错误、502 网关错误。发 HTTP 请求拿数据用 requests 库import requests url https://international.v1.hitokoto.cn/ params {c: a, encode: json} # 一言网的 API try: response requests.get(url, paramsparams) status_code response.status_code if status_code 200: data response.json() hitokoto data[hitokoto] from_who data[from_who] if data[from_who] else 未知 print(f随机名言: {hitokoto} - {from_who}) elif status_code 404: print(请求的资源未找到) elif status_code 500: print(服务器内部错误) else: print(f发生未知错误状态码: {status_code}) except requests.RequestException as e: print(f请求过程中出现错误: {e})老哥收尾网络编程一句话三要素协议 / IP / 端口TCP 可靠要连接、UDP 快但不稳socket 建套接字服务端 bindlistenaccept、客户端 connectHTTP 请求响应、8 种方法、5 类状态码。下一篇讲正则表达式—— 从文本里精准 抠 出想要的内容。有问题随时回来找老哥。

相关推荐

[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战

📌 核心结论(TL;DR)LCEL 灵魂:LangChain 表达式语言(LCEL)通过重载管道符 |,将实现了 Runnable 协议的组件(模型、解析器等)像积木一样串联,实现优雅的链式编… · 2026/11/5 1:56:41

多模块架构演进:横向分层 vs 纵向领域,13个真实项目的 Maven 切分对照
多模块架构演进:横向分层 vs 纵向领域,13个真实项目的 Maven 切分对照

老炮淘金:13 个真实企业项目的架构高光 S01 基于 13 个真实工程的目录结构与 pom 实测 关键词:多模块 Maven 技术分层 业务域切分 发布边界 依赖方向 👋 欢迎阅读 🏠个人主页: 知守观 📘我的专栏: 老炮淘金:13个真实企业项目的架构高光 💻当前内容: 模块切… · 2026/11/5 1:56:41

2025 供应链物流创新科技报告-142页
2025 供应链物流创新科技报告-142页

本 141 页 PPT 适配物流科技、智慧供应链、低空经济及数字化转型咨询方案编制。引用 Gartner、KPMG、DHL 权威技术趋势雷达,构建数字化‑自动化‑智能化三层发展框架。拆解多模态大模型、多智能体、具身智能三大 AI 前沿,收录京东、顺丰、货拉拉、菜鸟、… · 2026/11/5 1:55:41

Kafka低延迟优化实战:从原理到工程实践
Kafka低延迟优化实战:从原理到工程实践

1. Kafka低延迟优化实战指南在实时数据处理领域,Kafka作为分布式消息系统的标杆,其延迟表现直接影响着金融交易、实时监控等关键业务的响应速度。我曾负责过某证券公司的行情推送系统改造,当时将Kafka端到端延迟从200ms优化到15ms的经历让我深… · 2026/11/5 2:42:02

Ubuntu 22.04部署MySQL:从安装到优化全指南
Ubuntu 22.04部署MySQL:从安装到优化全指南

1. 为什么选择在Ubuntu 22.04上部署MySQLMySQL作为最流行的开源关系型数据库之一,在Web应用、企业系统和数据分析等领域有着广泛应用。Ubuntu 22.04 LTS作为长期支持版本,提供了稳定的软件包和五年的安全更新,是部署生产环境MySQL的理想选择。… · 2026/11/5 2:42:02

无人机集群协同路径规划:多段Dubins路径与威胁规避策略
无人机集群协同路径规划:多段Dubins路径与威胁规避策略

1. 项目背景与核心挑战无人机集群在复杂威胁环境下的协同路径规划是当前智能无人系统领域的前沿课题。当多架无人机需要在包含雷达探测区、防空火力圈、地形障碍等多样化威胁的空间中执行协同任务时,传统的单机路径规划方法往往难以满足以下需求:时空协同… · 2026/11/5 2:42:02

Solon AI v3.9架构升级:分布式调度与多模态交互优化
Solon AI v3.9架构升级:分布式调度与多模态交互优化

1. Solon AI v3.9 版本升级解析上周五深夜,团队终于把Solon AI v3.9的最后一个测试用例跑通。这个被内部称为"技能大爆炸"的版本,可能是我们今年最具突破性的更新。相比v3.8,新版本在技能组合、上下文理解和多模态交互这三个维度实… · 2026/11/5 2:42:02

QNX串口程序实战:termios原始模式、环形缓冲与帧状态机
QNX串口程序实战:termios原始模式、环形缓冲与帧状态机

简介:这是一份面向QNX嵌入式开发初学者与串口通信学习者的源码实例包,围绕实时操作系统下的串口编程展开,可用于理解设备节点访问、参数配置与数据收发流程,适合需要快速搭建串口实验并对照源码排查配置问题的自学者。压缩包为rar… · 2026/11/5 2:42:02

可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取

简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码