socket
Socket是应用层与TCP/IP协议中通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
服务端
import socket
phone = 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 socket
phone = 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 = 5
buffer_size=1024
tcp_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 = 5
buffer_size=1024
tcp_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()