路飞学城Python-Day27(复习)
简单的socket通信

import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('127.0.0.1', 8080)) msg = input('>>>').strip() client.send(msg.encode('gbk')) res = client.recv(1024) print(res) client.close()

import socket sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.bind(('127.0.0.1', 8080)) sk.listen(5) conn, addr = sk.accept() res = conn.recv(1024) conn.send(res.upper()) conn.close() sk.close()
聊天版socket通信

import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('127.0.0.1', 8080)) while True: msg = input('发送信息>>>').strip() client.send(msg.encode('gbk')) re = client.recv(1024) print('接收到的消息%s'%(re.decode('gbk')))

import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 8080)) server.listen(5) while True: conn,addr = server.accept() while True: try: msg = conn.recv(1024) print('接收到客户端的信息%s'%(msg.decode('gbk'))) re = input('请回复信息>>>').strip() conn.send(re.encode('gbk')) except ConnectionResetError: pass
粘包版socket通信

import socket import struct import pickle client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('127.0.0.1', 8080)) while True: msg = input('请输入发送的消息>>>').strip() msg_dict = { 'msg':msg } msg_p = pickle.dumps(msg_dict) client.send(struct.pack('i',len(msg_p))) res = pickle.loads(client.recv(1024)) if res['confirm']: client.send(msg.encode('gbk')) else: pass

import socket import struct import pickle server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 8080)) server.listen(5) while True: conn, addr = server.accept() while True: res = conn.recv(4) receive_bytes = struct.unpack('i',res)[0] if receive_bytes<1024: msg = { 'confirm': True, } msg_p = pickle.dumps(msg) conn.send(msg_p) res = conn.recv(1024) print(res.decode('gbk')) else: msg = { 'confirm':False, } msg_p = pickle.dumps(msg) conn.send(msg_p)
写一个异常

try: int_number = int(input('请输入一个整数').strip()) print(int_number) except Exception as e: print(e)
自定义异常

class E(BaseException): def __init__(self): err = '发生异常了!' BaseException.__init__(self,err) raise E
windows系统版客户端和服务端

import socket import pickle import struct import subprocess client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('127.0.0.1', 8080)) while True: command = input('请输入命令>>>').strip() msg_dict = { 'msg':command } msg = pickle.dumps(msg_dict) client.send(struct.pack('i', len(msg))) res = client.recv(1024) if pickle.loads(res)['confirm']: client.send(command.encode('gbk')) # 解析长度 res_len = client.recv(4) cmd_len = struct.unpack('i',res_len)[0] # 接收结果 fin_res = client.recv(cmd_len).decode('gbk') print(fin_res) else: print('超出字符限制,请重试!')

import socket import pickle import struct import subprocess # a=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE) # print(a.stdout.read().decode('gbk')) server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 8080)) server.listen(5) while True: conn, addr = server.accept() while True: try: res = conn.recv(4) res_bytes = struct.unpack('i',res)[0] if res_bytes<1024: msg = { 'confirm':True, } conn.send(pickle.dumps(msg)) cmd = conn.recv(1024).decode('gbk') cmd_res = subprocess.Popen( cmd, shell= True, stdout= subprocess.PIPE, stderr= subprocess.PIPE ) res_cmd = cmd_res.stdout.read() # 发送长度 conn.send(struct.pack('i',len(res_cmd))) # 发送结果 conn.send(res_cmd) else: msg = { 'confirm': False, } conn.send(pickle.dumps(msg)) except Exception as e: print(e) break
Win a contest, win a challenge
posted on 2018-07-26 11:19 pandaboy1123 阅读(123) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南