python 实现使用tcp协议

xiaoxiao2025-05-29  35

.使用tcp协议编写满足如下要求的服务器端和客户端代码,客户端向服务器端发送以下两种格式的请求数据: 格式一: GET filename 例如 GET 1.txt 服务器收到这种格式的请求之后,读取c:\homepages\目录下面指定filename文件(例如c:\homepage\1.txt)的内容,并按照如下约定返回响应数据: 如果文件存在,则返回两行内容: 200 c:\homepage\1.txt文件的内容 如果文件不存在,则返回下面两行内容: 404 file not found

格式二: POST filename xxxxxx 服务器端收到这种请求之后,在c:\homepages\目录下面以指定filename创建文件,并写入xxxxxx的内容,如果文件存在,则追加写入。返回给客户端的数据如下: 200 写入长度 代码参考 客户端

import socket while True: tcpclient=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpclient.connect(('127.0.0.1',12345)) print("请按照规定格式输入请求:GET filename or POST filename xxxxxx") n=str(input("请输入请求:")) tcpclient.send(n.encode('utf-8')) reply=tcpclient.recv(1024) print(reply.decode('utf-8'))

服务器端

import socket import os tcpsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpsocket.bind(("127.0.0.1",12345)) while True: tcpsocket.listen(3) conn,client_adr=tcpsocket.accept() dat=conn.recv(1024) data=dat.decode() method=data.split(" ")[0] txtname=str(data.split(" ")[1]) path ="E:/Python _文件/"+txtname if method=='GET': if (os.path.isfile(path)): f = open(path) data1 = f.read() conn.send(('200'+'\n'+data1).encode('utf-8')) else: conn.send(('404'+'\n'+"file not found").encode('utf-8')) conn.close() if method=='POST': txtcontent = str(data.split(' ')[2]) f=open(path,'a',encoding='utf-8') f.write(txtcontent) f.close() conn.send(('200'+'\n'+str(len(txtcontent))).encode('utf-8')) conn.close()
转载请注明原文地址: https://www.6miu.com/read-5030905.html

最新回复(0)