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()
相关推荐
阿正的梦工坊19 小时前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
2301_8166602119 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员19 小时前
数据工程 pipelines 实践
python·github
知行合一。。。20 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴20 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
青梅橘子皮20 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
qq_3721542320 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
浅时光_c20 小时前
3 shell脚本编程
linux·开发语言·bash
Evand J20 小时前
【三维轨迹目标定位,CKF+RTS,MATLAB程序】基于CKF与RTS平滑的三维非线性目标跟踪(距离+方位角+俯仰角)
开发语言·matlab·目标跟踪
Lucis__21 小时前
一文读懂TCP通信机制:基于相关API构建可靠性连接
linux·网络·tcp/ip