一(07)、创建Socket
- 代码实例
- 运行结果
二(08)、Socket发送数据案例
(一)实操代码
实操代码
(二)运行结果
三(09)、UDP服务器端
(一)UDP特点
- UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
- 腾讯QQ使用最多的是UDP
- 客户端的端口不需要记忆,一般来说要记忆的是服务器的端口
服务器端的结构
其中只有具有默认网关的是本台电脑所在的网络
在UDP编码的过程中要输入这个网络的IPv4地址
(二)服务器端与客户端通讯实操
- 服务器端
- 客户端
运行过程:
1、先打开UDP服务器端,程序保持运行
2、打开UDP客户端,在客户端中输入数据
3、UDP服务器端接收到数据。decode可以返回接收到的源数据;打印返回data信息并终止进程
- 注:50180数服务器端动态分配的端口
(三)核心代码
1、UDP服务器端
import socket
from socket import *
#1.创建一个服务器端的Socket
socket_server = socket(AF_INET,SOCK_DGRAM)
#2.定义服务的IP地址和端口号
host_port = ('192.168.43.234',8090)
#3.服务器端的Socket来绑定地址和端口,只有绑定了地址和端口,才能称之为服务器的Socket
socket_server.bind(host_port)
#4.接受客户端发过来的数据,每次接受1KB的数据
data = socket_server.recvfrom(1024)
print(data[0].decode('utf-8'))
print(data)
#5.关闭套接字来释放资源
socket_server.close()
2、UDP客户端
from socket import *
#创建一个UDP协议的套接字,然后发送一条数据到网络上的另外一个进程
#1.创建套接字
client_socket = socket(AF_INET,SOCK_DGRAM)
#2.定义一个接受消息的目标,8080是一个目标服务器的端口,127.0.0.1是目标服务器地址
# server_host_port=('127.0.0.1',8080)
server_host_port=('192.168.43.234',8090)
#3.准备即将发送的数据,encode表示按照编码格式把数据变成字节数组bytes
#数据一定是字节数据才能发送
datas = input("请输入:").encode('utf-8')
#4.发送数据,标识一个进程是通过IP+端口+协议
client_socket.sendto(datas,server_host_port)
print('发送完成')
#5.关闭套接字,其实就是释放了系统资源
client_socket.close()