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()
相关推荐
love530love10 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
程序喵大人11 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng12 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
wdfk_prog13 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
_Jimmy_13 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
晴空了无痕13 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
用户83562907805113 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
神明不懂浪漫13 小时前
【第五章】Java中的继承与多态
java·开发语言
神州世通14 小时前
解密企业通信安全防线:Avaya Aura 三层安全架构深度解析
开发语言·php
AC赳赳老秦15 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw