本博文源于python基础,主要探讨python的网络编程那些事儿。
实验效果
服务器端效果
客户端发送效果
实验原理
作为服务器端,几个流程熟悉一下:
- 建立套接字
- 绑定本机地址
- 开始监听
- 等待连接
- 接收数据或发送数据
- 关闭套接字
作为客户端
- 建立套接字
- 连接服务器
- 接收数据或者发送数据
- 关闭套接字
又因为:
s = socket() # 建立套接字
s.bind() # 绑定本机地址
s.listen() # 开始监听
c,a = s.accept() # 等待连接
c.recv()/s.send() # 接受/发送数据
s.close() # 关闭套接字
根据这些原理,服务器端的代码和客户端的代码应该是这样子的:
实验代码
server.py
import socket
HOST = ''
PORT = 10888
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen(1)
conn, addr = s.accept()
print('Client\'s Address:',addr)
while True:
data = conn.recv(2048)
if not data:
break
print('Receive Data:',data.decode('utf-8'))
conn.send(data)
conn.close()
client.py
import socket
HOST = 'localhost'
PORT = 10888
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
data = '你好!'
while data:
s.sendall(data.encode('UTF-8'))
data = s.recv(512)
print('Receve from server:\n',data.decode('utf-8'))
data = input('Please input a info:\n')
s.close()
总结
通过比较发现,作为服务器端永远保持运行,直到收到数据为中止服务器运行。而作为客户端直到输入数据为空,然后停止通信。