一、网络编程的基本概念
通信协议: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()