UDP通信编程-客户端发送一个字符串,假设服务器端在本机1024端口进行监听,并显示接收的内容,如果收到字符串“结束通话”,则结束监听
服务端代码
# 服务端代码
import socket # 导入socket模块
serversocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 使用socket模块
port = 1024 # 定义端口号
host = "192.168.31.6" # 主机地址
address = (host,port) # 组件元组对象
serversocket.bind(address) # 绑定指定地址
print("正在接收用户消息.....") # 输出
while True: # 建立循环,不断接受用户请求信息
data,addr = serversocket.recvfrom(1024) # 不断接受用户请求信息,最大接受1024字节
receivetext=data.decode() # 字节码转换为字符串类型
if receivetext=="结束通信": # 判断接受到的数据是否为结束通信
break
else:
print('来自于{0}的信息:{1}'.format(addr,receivetext))
serversocket.sendto(data,addr) # 发送消息给客户端
serversocket.close()
接收端代码
import socket # 导入socket模块
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 使用socket模块 创建套接字对象
port = 1024 # 定义端口号
host = "192.168.31.6" # 主机地址
address = (host, port) # 构建发送信息的目标地址
while True: # 建立循环,无限发送信息
inputtext = input("请输入信息:").encode() # 字节码转换为字符串类型
clientsocket.sendto(inputtext, address)
if inputtext.decode() == "结束通信": # 判断接受到的数据是否为结束通信
break
else: # 判断接受到的数据不是结束通信
data, addr = clientsocket.recvfrom(1024)
data = data.decode()
print("系统分配地址{}".format(clientsocket.getsockname()))
print("服务器{0}回答{1}".format(address, data))
clientsocket.close()
运行结果:
?
?TCP通信编程:使用TCP协议,客户端发送一个字符串,假设服务器端在本机12345端口进行监听,并显示接收的内容,如果收到字符串“结束通话”,则结束监听。
服务端代码
from socket import * # 导入模块
from time import ctime
serversocket = socket(AF_INET,SOCK_STREAM) # 使用socket模块中的socket对象创建服务端的套接字
addr = ('localhost',12345) # 套接字对象绑定在指定的地址上
serversocket.bind(addr)
serversocket.listen(1) # 监听设置
while 1: # 建立循环,不断接受多个客户端请求
print("正在接收用户信息......")
client, addr_client = serversocket.accept() # 等待客户端的连接
print("信息来自于:",addr_client)
while 1: # 内嵌循环,可以完成与当前客户端的多次通信
data = client.recv(1024).decode()
s = "[%s]接收到信息:%s" % (ctime(),data) # 构建响应消息,反馈给客户端
s = s.encode() # 字符串转换为字节码对象
client.send(s)
if data=="结束通信": # 判断请求信息
break
print("此次服务到此结束!")
client.close()
serversocket.close()
?接收端代码
from socket import * # 导入模块
clientsocket = socket(AF_INET,SOCK_STREAM) # 使用socket模块中的socket对象创建
addr = ('localhost',12345) # 套接字对象绑定在指定的地址上
clientsocket.connect(addr) # 与服务端进行连接
while 1: # 建立循环,不断与服务端发送请求信息
inputtext = input("请输入信息:") # 用户从终端输入请求信息
clientsocket.sendall(inputtext.encode()) # 请求信息发送给服务端
data = clientsocket.recv(1024).decode() # 字节码转换为字符串
print(data)
if inputtext=="结束通信": # 判断用户结束通信
break
clientsocket.close()
运行结果:
|