郭帅Bryan · 2020年10月12日

云芯一号——运行TCP通信例程

前言

感谢极术社区提供的云芯一号微服务器开发板,关于硬件介绍以及相关基础教程已经在ARM微服务器专栏有了很多不错的文章。本文介绍了服务器与个人电脑简单通信的实现过程,所用程序在文后附上。由于本人能力所限,如有错误请大家指正。

一、程序上传到云芯一号开发板

将路由器和开发板用RJ45网线连接起来,即将开发板连接到局域网下。所用例程为server.py。
打开win下的cmd命令行,在这之前,先确认好开发板的ip地址,本文采用的ip为192.168.0.188。

sftp jishu@192.168.0.188

键入后回车,输入开发板系统的密码后进入sftp命令行,使用put命令将win上的文件位置上传到服务器上。
image.png
注:连接局域网、系统登录以及文件管理也可参考Arm微服务器官方专栏。

二、ssh登录与程序运行

接下来先在服务器上运行server.py,之后在win系统运行client.py即可。
通过ssh登录服务器,键入

ssh jishu@192.168.0.188

image.png
运行程序:
image.png
image.png

#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)
推荐阅读
关注数
4278
内容数
71
低成本Arm微服务器开发平台“云芯1号”教程及应用,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息