Python TCP服务器/客户端+UDP发送端/接收端

'''
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()

猜你喜欢

转载自blog.csdn.net/zheng_ruiguo/article/details/84776449