python socket通信--Apple的学习笔记

参考bb-black添加SocketCAN驱动--Apple的学习笔记昨天CAN驱动添加完成后,今天本来准备为USB1(原本是个host接口)添加一个device接口。因为我知道AM335的2个USB都是支持OTG的,有USB_ID引脚。结果看了下原理图USB0的ID引脚是接地的,说明只能作为host。好吧,那么我就不折腾了,因为USB0本来就是设备接口而且当前支持USB转RNDIS网口(只是win10驱动的原因导致无法识别,但是ubuntu上是好的)。原来想用usb通信作为PC和bb-black数据交互的,那么还是用网络socket通信吧!因为驱动这块不是我这次的重点。

重点来了,这次PC上位机的软件我准备选python,我要把python技能继续进阶,包括要学习python GUI编程,提高python大型工程架构设计能力。这样我将来的python工具可以做的更加专业了!虽然我不靠python吃饭,但是它真的能帮助我提高工作效率!

第一步:基于python的socket通信
既然PC端已经虚拟为网口了,那么python socket编程是必须的。2年前用过,blog地址:python-opencv的网络视频监控方案--Apple的学习笔记,现在翻出来复习下,再实现下。下图为PC作为server,ubuntu作为client(我通过VNC连接的ubuntu)

image.png

#server.py
__author__ = 'AppleCai'
import socket

if "__main__" == __name__:

    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        print("create socket success!")

        #sock.bind(('localhost', 6666))
        sock.bind(('192.168.0.111',6666))
        print("bind socket success!")
        sock.listen(2)
        print("listen success!")

    except:
        print("init socket err!")

    while True:
        print("listen for client...")
        conn, addr = sock.accept()
        print("get client")
        print(addr)

        conn.settimeout(5)
        szBuf = conn.recv(1024)
        szBuf2 = szBuf.decode('utf-8')
        print("recv:" + szBuf2)

        if "0" == szBuf2:
            conn.send(b'exit')
        else:
            conn.send(b'welcome client!')

        conn.close()
        print("end of server")
__author__ = 'AppleCai'
#!/usr/bin/env python

import socket;

if "__main__" == __name__:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(('192.168.0.111', 6666))
    u= "Hello,I'm AppleCai!"
    str3 = u.encode('utf-8')
    sock.send(str3)
    #sock.sendall(b'0')

    szBuf = sock.recv(1024)
    szBuf2 = szBuf.decode('utf-8')
    print("recv " + szBuf2)
    sock.close()
    print("end of connect")

你可能感兴趣的:(python socket通信--Apple的学习笔记)