python_网络编程_socket

一、网络编程的基本概念

通信协议:internet 协议,任何私有网络支持此协议,就可以接入互联网

二、七层协议与四层协议

从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

三、掌握TCP、IP协议

ip 协议是整个TCP、IP协议族的核心

IP 地址就是会联网上计算机的唯一标识

目前的ip地址有两种表示方式,IPV4 和 IPV6

ipconfig 可以查看本机的 ip 地址

TCP协议:传输控制协议,是建立在IP协议基础之上的,TCP协议负责两台计算机之间建立可靠连接,保证数据按顺序发送。是可靠的,一对一的,面向有连接的通信协议。

四、掌握UDP协议

UDP 协议:用户数据包协议。面向无连接的协议,只要知道对方的IP地址和端口,就可以直接发送数据包,因为是面向无连接的,无法保证数据一定会到达接收方

端口号:区分计算机中的运行的应用程序的整数,范围是0到65535,一共65536个。其中80个分配给HTTP 服务,21 个分给FTP服务

五、掌握socket套接字

六、TCP编程

TCP 服务器端流程:

1、使用socket 类创建一个套接字对象

2、使用bind 方法绑定IP地址和端口号

3、使用listen 方法开始TCP 监听

4、使用 accept 方法等待客户端的连接

5、使用recv() 和 send() 方法接受、发送数据

6、使用close 方法关闭套接字

python 复制代码
# haha
# time:2024/6/30 16:16

# TCP 编程  ,AF_INET 用于internet 之间的进程通信,SOCK_STREAM 表示的是TCP协议编程
from socket import socket,AF_INET,SOCK_STREAM

#创建 socket 对象
server_socket = socket(AF_INET,SOCK_STREAM)

#绑定 IP 地址和端口
ip = '127.0.0.1'
port = 8888 # 端口号
server_socket.bind((ip,port))

#使用 listen 开始监听
server_socket.listen(5)  # 表示的最大连接数
print("服务器已经启动")

#等待客户端的连接
client_socket,client_addr = server_socket.accept() #系列解包赋值,分别赋值

#接受来自客户端的数据
data = client_socket.recv(1024)  #1024 表示要接受的最大数据量
print(data.decode('UTF-8'))  #解码

#发送数据

#关闭socket
server_socket.close()

TCP 客户端流程:

1、使用 socket 类创建一个套接字对象

2、使用 connect ((host,port))设置连接的主机ip 和主机设置的端口号

3、使用recv() send()方法接收数据、发送数据

4、使用close()关闭套接字

python 复制代码
import socket

socket_user = socket.socket()

#绑定 IP 地址和端口
ip = '127.0.0.1'
port = 8888 # 端口号

socket_user.connect((ip,port))
print("与服务器的连接成功")


socket_user.send('hello nnnnnnnn'.encode('UTF-8')) #使用UTF-8 进行编码,

socket_user.close()

七、UDP编程

python 复制代码
# haha
# time:2024/6/30 16:39
import socket

socket_user = socket.socket()

#绑定 IP 地址和端口
ip = '127.0.0.1'
port = 8888 # 端口号

socket_user.connect((ip,port))
print("与服务器的连接成功")

while(True):
    data = input()
    socket_user.send(data.encode('UTF-8'))  # 使用UTF-8 进行编码,
    if data == 'bye':
        print('结束通信')
        break
# socket_user.send('hello nnnnnnnn'.encode('UTF-8')) #使用UTF-8 进行编码,

socket_user.close()
python 复制代码
# haha
# time:2024/7/1 10:50

from socket import socket,AF_INET,SOCK_DGRAM
rece_socket = socket(AF_INET,SOCK_DGRAM)


rece_socket.bind(('127.0.0.1',8899))

data,addr = rece_socket.recvfrom(1024)

print(data.decode('utf-8'))

send_data = input('请输入需要回复的数据')
rece_socket.sendto(send_data.encode('utf-8'),addr)

rece_socket.close()
相关推荐
apocelipes5 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780517 小时前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent12 小时前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m62515 小时前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB1 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码2 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵2 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li2 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸2 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学2 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员