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()
相关推荐
诗书画唱15 分钟前
【前端面试题】JavaScript 核心知识点解析(第二十二题到第六十一题)
开发语言·前端·javascript
冬天vs不冷15 分钟前
Java基础(九):Object核心类深度剖析
java·开发语言·python
TS的美梦16 分钟前
【1:1复刻R版】python版火山图函数一键出图
开发语言·python·r语言·scanpy·火山图
CF14年老兵28 分钟前
Python万物皆对象:从懵懂到顿悟的奇妙之旅
后端·python·trae
这里有鱼汤31 分钟前
发现个用《道德经》+价值投资大咖的智慧,做A股的AI诊股神器,居然还开源了
python
陈天伟教授1 小时前
(二)Python + 地球信息科学与技术 (GeoICT)=?
开发语言·python
之歆2 小时前
大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
人工智能·笔记·python
人工干智能2 小时前
pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
python·游戏·计算机外设·pygame
R-G-B2 小时前
【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
python·opencv·计算机外设·鼠标回调函数·鼠标控制·鼠标移动·鼠标绘制图形
IT古董5 小时前
第四章:大模型(LLM)】06.langchain原理-(3)LangChain Prompt 用法
java·人工智能·python