第1关:面向连接的 socket 模型
服务端service
python
复制代码
# -*- coding: utf-8 -*-
# @Time : 2022/8/1 10:19
# @Author : 陈玉辉
# @File : service.py
import socket
HOST = "127.0.0.1" # 在右侧补充代码, 本地主机,指这台计算机,对应的 IP 地址为 127.0.0.1
PORT = 5000 # 端口 0~1024 为系统保留
ADDRESS = (HOST, PORT)
BUFFER = 1024 # 数据发送和接收的最大数据大小
print("初始化服务器主机套接字对象.....")
server = socket.socket() # 在括号内补充代码, 面向网络的套接字: 通过 网络进行数据交互, TCP 协议,server 就是 socket 的实例
print("绑定主机信息....")
server.bind(ADDRESS) # 元组,相当于一个参数
server.listen(10)
print("wait client")
conn, addr = server.accept()
while True:
# 在下方补充代码,获取消息
recvmsg = conn.recv(BUFFER)
data = recvmsg.decode("utf-8")
print("收到来自客户端的消息: ", data)
if data == "exit":
break
# 在下方补充代码,发送消息
conn.send(data.encode("utf-8"))
server.close()
客户端client
python
复制代码
# -*- coding: utf-8 -*-
# @Time : 2022/8/1 10:19
# @Author : 陈玉辉
# @File : client.py
import socket
# 定义要连接的服务器信息
HOST = "127.0.0.1" # 在右侧补充代码, 本地主机,指这台计算机,对应的 IP 地址为 127.0.0.1
PORT = 5000 # 端口 0~1024 为系统保留
ADDRESS = (HOST, PORT)
BUFFER = 1024 # 数据发送和接收的最大缓冲区大小 #创建客户端套接字对象
client = socket.socket() # 在括号内补充代码, 相当于声明 socket 类 型,同时生成 socket 链接对象,面向网络的套接字: 通过网络进行数据交互, TCP #连接服务器
client.connect(ADDRESS)
infos = ["hello service", "I'm client", "exit"]
for info in infos:
#在下方补充代码,发送信息
client.send(info.encode("utf-8"))
# 在下方补充代码, 接收服务端信息 print("等待服务端发送信息: ")
data=client.recv(BUFFER)
if data:
print("收到服务端返回的数据:{}".format(data.decode("utf-8")))
client.close()
第2关:面向无连接的 socket 模型
服务端service
python
复制代码
# -*- coding: utf-8 -*-
import socket
# 定义服务器信息
print('初始化服务器主机信息')
HOST = "127.0.0.1" # 获取本地主机
PORT = 5001
ADDRESS = (HOST, PORT)
BUFFER = 1024
# 创建 UDP 服务 socket 对象
print("初始化服务器主机套接字对象......")
server = socket.socket(type=socket.SOCK_DGRAM) # UDP
# 绑定主机信息
server.bind(ADDRESS)
print('绑定的主机信息......')
# 等待连接
print('等待客户端连接')
while True:
recvmsg, addr = server.recvfrom(BUFFER) # 收消息
data = recvmsg.decode("utf-8")
print("收到来自客户端的消息: ", data)
server.sendto(recvmsg, addr) # 把收到的消息发送回去
if data == "exit":
break
server.close()
客户端client
python
复制代码
import socket
# 定义要连接的服务器信息
HOST = "127.0.0.1" # 本地主机
PORT = 5001
ADDRESS = (HOST, PORT)
BUFFER = 1024
# 创建客户端套接字对象
client = socket.socket(type=socket.SOCK_DGRAM) # UDP
msgs = ["hello services", "I'm client", "exit"]
for msg in msgs:
client.sendto(msg.encode("utf-8"), ADDRESS) # 发送消息
recvmsg, addr = client.recvfrom(BUFFER) # 接收消息
data = recvmsg.decode("utf-8")
print('收到服务端的发来的消息: ', data)
client.close()