Python TCP伺服器/客戶端+UDP傳送端/接收端
阿新 • • 發佈:2019-01-07
''' socketserver ''' import time import socket import socketserver class RequestHandler(socketserver.StreamRequestHandler): def handle(self): try: self.data = self.request.recv(1024).decode() print('%s:%s>>%s'%(self.client_address[0],self.client_address[1],self.data)) self.request.sendall(('[%s]%s'%(time.ctime(),self.data)).encode()) except: print('%s:%s:%s'%(self.client_address[0],self.client_address[1],'say goodby')) def tcp_socketserver_server(): s = socketserver.ThreadingTCPServer(('',9999),RequestHandler) print('TCPServer listening on %s:%s......'%(socket.gethostbyname(socket.gethostname()),9999)) s.serve_forever() ''' socket ''' def tcp_socketserver_client(): while True: s = socket.socket() s.connect((socket.gethostbyname(socket.gethostname()),9999)) text = input('send:') s.send(text.encode()) re = s.recv(1024) print(re.decode()) def tcp_server(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('0.0.0.0',9999)) s.listen() print(socket.gethostbyname(socket.gethostname()),9999,'server starting ......') while True: try: client,addr = s.accept() recv = client.recv(1024).decode() print(addr[0],addr[1],'>>',recv) client.send(recv.encode()) except: print(addr[0],addr[1],'>>','say goodby') def tcp_client(): while True: s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((socket.gethostbyname(socket.gethostname()),9999)) text = input('send:').encode() s.send(text) response = s.recv(1024).decode() print(response) s.close() def udp_recver(): s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) ip = socket.gethostbyname(socket.gethostname()) port = int(input('\ninput your recver port please:')) s.bind((ip,port)) print(ip,port,'listening......') data,addr = s.recvfrom(1024) print(addr,':',data.decode()) s.sendto(data,addr) def udp_sender(): s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) ip = input('input target ip please:') port = int(input('input target port please:')) text = input('send:').encode() s.sendto(text,(ip,port)) data,addr = s.recvfrom(1024) print(data.decode()) def select_type(): return tcp_server() if __name__ == '__main__': select_type()