TCP编程
#!/usr/bin/python import socket import threading import time s = socket.socket(socket.AF_INET, sock.SOCK_STREAM) s.bind(('127.0.0.1', 9999)) s.listen(5) print('waiting for connection...') while True: sock, addr = s.accept() t = threading.Thread(target=tcplink, args=(sock, addr)) t.start() def tcplink(sock, addr): print('Accept new connection from %s:%s..' % addr) sock.send(b'welcome!') while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8') == 'exit': break sock.send(('hello, %s' %data).encode('utf-8')) sock.close() print('connection from %s:%s' % addr)
UDP编程
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(('127.0.0.1', 9999)) print('bind upd on 9999...') while True: data, addr = s.recvfrom(1024) print('received from %s:%s...' % addr) s.sendto(b'hello, %s.' % data, addr)
recvfrom()
方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用sendto()
就可以把数据用UDP发给客户端。