python: socket
""" 网络发送信息 """ import socket import threading def handlesend(tcpclient): """ 发送 :return: """ while True: message = input() tcpclient.send(message.encode()) def handlerecv(tcpclient): """ 接收 :return: """ recvdata = tcpclient.recv(1024) print(recvdata.decode()) # 中文 # print(recvdata.decode('gbk')) def send(): #TCP 客户端 #1 创建TCP socket 对象 # socket.AF_INET ip4 # socket.SOCK_STREAM TCP 协议 # socket.DGRAM upd 协议 tcpclient=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2 链接TCP 服务端 ip地址, port 端口 tcpclient.connect('172.16.1.106',6666) t1=threading.Thread(target=handlesend,args=(tcpclient,)) t1.start() t2=threading.Thread(target=handlerecv,args=(tcpclient,)) t2.start() ''' #3 发送信息 while True: message=input() tcpclient.send(message.encode()) #中文 #tcpclient.send(message.encode('gbk')) #4 接收信息 用多线程来解决卡顿 recvdata=tcpclient.recv(1024) print(recvdata.decode()) #中文 #print(recvdata.decode('gbk')) ''' #5 关闭 socket tcpclient.close()
""" """ import socket import threading def servertcp(): # Tcp 服务端 # 1 创建tcp sockect tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2 绑定端口号 tcpserver.bind('', 6667) # 3 监听端户端最大个数 tcpserver.listen(80) print("服务器启动") # 4 等待接收客户端 while True: #acceptdata=tcpserver.accept() newclient,ipoort= tcpserver.accept() print(ipoort,'链接近来了') # 5 发送数据 newclient.send('连我干吗?'.encode('gbk')) # 6 接收数据 recvdata=newclient.recv(1024) print('接收到信息',recvdata.decode('gbk')) newclient.close() # 7 关闭 socket tcpserver.close()
""" 服务器端 """ import socket import threading def handlecliend(newclient): """ :param newclient: :return: """ # 5 发送数据 newclient.send('连我干吗?'.encode('gbk')) # 6 接收数据 recvdata = newclient.recv(1024) print('接收到信息', recvdata.decode('gbk')) newclient.close() def servertcp(): # Tcp 服务端 # 1 创建tcp sockect tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2 绑定端口号 tcpserver.bind('', 6667) # 3 监听端户端最大个数 tcpserver.listen(80) print("服务器启动") # 4 等待接收客户端 改成多线程 while True: #acceptdata=tcpserver.accept() newclient,ipoort= tcpserver.accept() print(ipoort,'链接近来了') ''' # 5 发送数据 newclient.send('连我干吗?'.encode('gbk')) # 6 接收数据 recvdata=newclient.recv(1024) print('接收到信息',recvdata.decode('gbk')) newclient.close() ''' t=threading.Thread(target=handlecliend,args=(newclient,)) t.start() # 7 关闭 socket tcpserver.close()
""" ClienSendFile.py https://github.com/justEhmadSaeed/Python-Sockets-File-Transfer https://codereview.stackexchange.com/questions/197462/large-file-transmission-over-socket-in-python https://www.pybloggers.com/2014/06/python-and-sendfile/ https://github.com/giampaolo/pysendfile """ import socket import os import threading HOST = "127.0.0.1" # The server's hostname or IP address localhost PORT = 8000 # The port used by the server def handlesendtofile(tcpclient:socket.socket,path:str,filename:str): """ :param tcpclient: :param path: :param filename: :return: """ tcpclient.send(filename.encode('gbk')) #发送文件名 with open(path,'rb') as fp: while True: data=fp.read(1024) tcpclient.send(data) if not data: break tcpclient.close() def sendfile(): # Tcp 服务端 # 1 创建tcp sockect #2 链接TCP 服务端 ip地址, port 端口 #tcpclient.connect('172.16.1.106',6667) # 4 等待接收客户端 改成多线程 while True: filename=input("请输入文件名:") path=rf'client_dir\{filename}' if not os.path.exists(path): print("你输入的文件名不存在") continue try: tcpclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcpclient.connect('172.16.1.106', 6667) t=threading.Thread(target=handlesendtofile,args=(tcpclient,path,'来自于客户端'+filename)) t.start() except Exception as ex: print(ex) print('发送完成!') tcpclient.close() def send(): """ :return: """ file = open('doc.txt', 'rb') data = file.read(1024) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as ss: while data: ss.send(data) data = file.read(1024) if not data: break file.close() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b"Hello, world") data = s.recv(1024) print(f"Received {data!r}")
""" ServerReceFile.py """ import socket import os import threading #import tqdm HOST = "127.0.0.1" # The server's hostname or IP address PORT = 8000 # The port used by the server SEPARATOR = "<SEPARATOR>" BUFFER_SIZE = 4096 # send 4096 bytes each time step def handleReceFile(newclient:socket.socket): recvdata=newclient.recv(1024) filename=recvdata.decode('gbk') path=fr'server_dir\{filename}' with open(path,'wb') as fp: while True: data=newclient.recv(1024) fp.write(recvdata) if not recvdata: break print('接收完成') newclient.close() def ReceFile(): tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2 绑定端口号 tcpserver.bind('', 6667) # 3 监听端户端最大个数 tcpserver.listen(80) print("服务器启动") # 4 等待接收客户端 while True: # acceptdata=tcpserver.accept() newclient, ipoort = tcpserver.accept() t=threading.Thread(target=handleReceFile,args={newclient,}) t.start() def Rece(): """ :return: """ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept() with conn: print(f"Connected by {addr}") while True: data = conn.recv(1024) if not data: break conn.sendall(data)
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)