socket
Socket是应用层与TCP/IP协议中通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
服务端
import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind(('127.0.0.1',8030))phone.listen(5)conn,addr = phone.accept()#收消息msg = conn.recv(1024)print('客户端发来的消息是',msg)#发消息conn.send(msg.upper())conn.close()phone.close()复制代码
客户端
import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect(('127.0.0.1',8030))#拨通电话phone.send('hello'.encode('utf-8'))data = phone.recv(1024)print('收到服务端收到的消息',data)复制代码
服务端1
from socket import *ip_port =('127.0.0.1',9000)back_log = 5buffer_size=1024tcp_server = socket(AF_INET,SOCK_STREAM)tcp_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)tcp_server.bind(ip_port)tcp_server.listen(back_log)print('服务端开始运行了')while True: conn,addr = tcp_server.accept() print('双向连接是',conn) print('客户端地址',addr) while True: try: data = conn.recv(buffer_size) print('客户端发来的消息是', data.decode('utf-8')) conn.send(data.upper()) except Exception: break conn.close()tcp_server.close()复制代码
客户端1
from socket import *ip_port =('127.0.0.1',9000)back_log = 5buffer_size=1024tcp_client = socket(AF_INET,SOCK_STREAM)tcp_client.connect(ip_port)while True: msg=input('>>:').strip() #如果为空重新输入 if not msg:continue tcp_client.send(msg.encode('utf-8')) print('客户端已经发送消息') data = tcp_client.recv(buffer_size) print('收到服务端发来的消息',data.decode('utf-8'))tcp_client.close()复制代码