题记:好记性不如烂笔头,留下笔记,方便下次自己查看学习(这篇 blog暂时没有更新完毕)

目录

演示

在树莓派这边发送:我是树莓派
在这里插入图片描述
云服务器这边接受:
在这里插入图片描述

代码

树莓派端:

import socket
import sys
def sock_client_data():
    while True:
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect(('公网IP', 60000)) #60000是我选择的端口 
        except socket.error as msg:
            print(msg)
            print(sys.exit(1))
        data = input("input data:")   #输入要传输的数据
        s.send(data.encode())  #将要传输的数据编码发送,如果是字符数据就必须要编码发送
        s.close()
if __name__ == '__main__':
    sock_client_data()

服务器端代码:

# -*- coding: utf-8 -*-
import socket
import sys
def socket_service_data():
    name = socket.gethostname()
    HOST = socket.gethostbyname(name)  # 获取阿里云服务器私网IP,使用ifconfig可查询
    PORT = 60000 #安全组中设置
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind((HOST, PORT))  #在不同主机或者同一主机的不同系统下使用实际ip
        s.listen(10)
    except socket.error as msg:
        print(msg)
        sys.exit(1)

    print("Wait for Connection..................")

    while True:
        sock, addr = s.accept()
        buf = sock.recv(1024)  #接收数据
        buf = buf.decode()  #解码
        print("The data from " + str(addr[0]) + " is " + str(buf))
        print("Successfully")
        # return buf
        sock.close()
if __name__ == '__main__':
    socket_service_data()
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐