前言
感谢极术社区提供的云芯一号微服务器开发板,关于硬件介绍以及相关基础教程已经在ARM微服务器专栏有了很多不错的文章。本文介绍了服务器与个人电脑简单通信的实现过程,所用程序在文后附上。由于本人能力所限,如有错误请大家指正。
一、程序上传到云芯一号开发板
将路由器和开发板用RJ45网线连接起来,即将开发板连接到局域网下。所用例程为server.py。
打开win下的cmd命令行,在这之前,先确认好开发板的ip地址,本文采用的ip为192.168.0.188。
sftp jishu@192.168.0.188
键入后回车,输入开发板系统的密码后进入sftp命令行,使用put命令将win上的文件位置上传到服务器上。
注:连接局域网、系统登录以及文件管理也可参考Arm微服务器官方专栏。
二、ssh登录与程序运行
接下来先在服务器上运行server.py,之后在win系统运行client.py即可。
通过ssh登录服务器,键入
ssh jishu@192.168.0.188
运行程序:
#server.py
# import socket module
from socket import *
import json
import time
serverSocket = socket(AF_INET, SOCK_STREAM)
# Prepare a sever socket
serverSocket.bind(('localhost', 6789)) # 将TCP欢迎套接字绑定到指定端口
serverSocket.listen(1) # 最大连接数为1
return_data = {'data': '', 'temperature': '0.0', 'humidity': '0.0'}
while True:
# Establish the connection
print('Ready to serve...')
connectionSocket, addr = serverSocket.accept() # 接收到客户连接请求后,建立新的TCP连接套接字
try:
message = connectionSocket.recv(1024).decode() # 获取客户发送的报文
print(message)
raw_data = ""
if message == 'temperature':
f = open('./cache.txt')
raw_data = f.readline()
f.close()
local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
return_data['data'] = local_time
return_data['temperature'] = raw_data.split()[0]
return_data['humidity'] = raw_data.split()[1]
connectionSocket.send(json.dumps(return_data).encode())
connectionSocket.close()
else:
msg = 'no commend'
connectionSocket.send(msg.encode())
# Close client socket
connectionSocket.close()
except IOError:
# Send response message for file not found
# header = ' HTTP/1.1 404 Found'
header = ' type1 '
connectionSocket.send(header.encode())
finally:
# Close client socket
connectionSocket.close()
#client.py
import time
from socket import *
serverName = '192.168.0.188'
serverPort = 6789
while(True):
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
outputdata = 'temperature'
clientSocket.send(outputdata.encode())
data = 1
data = clientSocket.recv(1024)
print(data.decode(), end='')
print('\r')
time.sleep(1000)