1 目的(Purpose)
学习socket通信,使用python 创建客户端,服务器端,建立连接。
2 方法(Method)
Socket通信
TCP连接:用于指令传输,准确交付
UDP连接:用于图像数据传输,
暂时现在同一个系统下测试,后期会让Windows作为服务器端,Ubuntu18.04作为客户端进行测试
Server服务器端(Windows):
import socket
address = ('127.0.0.1', 5005) # 服务端地址和端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(address) # 绑定服务端地址和端口
s.listen(5)
conn, addr = s.accept() # 返回客户端地址和一个新的 socket 连接
print('[+] Connected with', addr)
while True:
data = conn.recv(1024) # buffersize 等于 1024
data = data.decode()
if not data:
break
print('[Received]', data)
send = input('Input: ')
conn.sendall(send.encode())
conn.close()
s.close()
Client客户端(Ubuntu18.04):
import socket
import sys
address = ('127.0.0.1', 5005) # 服务端地址和端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(address) # 尝试连接服务端
except Exception:
print('[!] Server not found ot not open')
sys.exit()
while True:
trigger = input('Input: ')
s.sendall(trigger.encode())
data = s.recv(1024)
data = data.decode()
print('[Recieved]', data)
if trigger == '###': # 自定义结束字符串
break
s.close()
上位机界面
需要做成这样,在完成任务的基础上可以有创新
搭建上位机界面
我想到这几种方式来搭建上位机界面:C++: MFC,Qt来做;Python:pyqt来做;Java:Java Swing来做
计划使用pyqt来做,比赛推荐C++,我个人感觉python更好上手去做。
3 结果(Result)
Server:
Client: