socket说明
socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。除了常见的http请求之外,一些敏感的数据传输常用socket套接字层直接传输数据。一个简单的domo用于熟悉socket的工作方式。
代码
server服务端
# 导入socket
import socket
# 设置代理地址
ip_port = ('127.0.0.1', 8888)
# 创建一个socket的对象
s = socket.socket()
# 绑定ip和端口
s.bind(ip_port)
# 开启监听
s.listen()
print("等待用户连接中")
while(True):
conn, addr = s.accept()
if conn is not None:
# print(addr)
print('有一个用户连接\n等待对方发送信息')
while (True):
try:
recv_data = conn.recv(1024)
# 显示接收的信息
print('对方发送的信息:', str(recv_data, encoding='utf-8'))
send_data = input('我回复>>').strip()
conn.send(bytes(send_data, encoding='utf-8'))
print('等待对方发送信息>>')
except Exception:
print('远程主机强迫关闭了一个现有的连接,续继等待其它的连接。')
break
conn.close()
client客户端
# 客户端
import socket
# 待建立连接HOST的ip/port
ip_port = ('127.0.0.1', 8888)
# 建立socket
s = socket.socket()
# 建立连接
s.connect(ip_port)
while (True):
# 待发送的信息
send_data = input('给对方发送信息:').strip()
s.send(bytes(send_data, encoding='utf-8'))
print('等待对方回复:')
# 接收信息并显示
recv_data = s.recv(1024)
print("recv_data内容: ", recv_data)
print('你有新的消息:', str(recv_data, encoding='utf-8'))
s.close()
效果
参考文章
https://blog.csdn.net/lxy210781/article/details/80641910