zoukankan      html  css  js  c++  java
  • python3 学习笔记 tcp/socket通信 封装通信模块

     tcp/socket通信 封装

    发送功能,接收功能独立分开

    定义server类和client类,可以直接继承使用

    后续可以将串口初始化信息,放入配置文件

    # 服务器端代码++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    
    from socket import *
    import os
    from time import ctime
    import threading
    from cmd import Cmd
    
    class Tcpsersocket(Cmd):
        def __init__(self):
            self.start_time = ctime()
            print('starting ' ,self.start_time)
    
        def conf(self):
            print(os.path)
            self.host = '127.0.0.1'
            self.port = 21567
            self.bufsize = 1024
            self.addr = (self.host, self.port)
    
            #声明一个socket对象 tcpsersocket
            tcpsersock = socket(AF_INET, SOCK_STREAM)
            tcpsersock.bind(self.addr)
            tcpsersock.listen(5)
            quit = False
            shutdown = False
            print('waiting for connection...')
    
            self.clientsocket, addr = tcpsersock.accept()
            print('client connected from: ', addr)
    
        def send(self):
            # self.ss = ss
            while 1:
                self.ss = input("input>>")
                self.clientsocket.send(self.ss.encode('utf-8'))
    
        def rec(self):
            while 1:
                data = self.clientsocket.recv(self.bufsize)
                data = data.decode('utf-8')
                print('
    ',ctime(), '
    ', "rec from client: ", data,'
    ','press enter to continue')
    
    def main():
        x = Tcpsersocket()
        x.conf()
        t1 = threading.Thread(target=x.send, name="send")
        t2 = threading.Thread(target=x.rec, name="rec")
        t1.start()
        t2.start()
    if __name__ =='__main__':
        main()
    
    from socket import *
    import threading
    from cmd import Cmd
    class myclientsocket(Cmd):
        def __init__(self,host,port,BUFFSIZE):
            Cmd.__init__(self)
            self.host = host
            self.port = port
            self.buffsize = BUFFSIZE
            self.addr = (self.host, self.port)
    
        def conn(self):
            self.clientsocket = socket(AF_INET, SOCK_STREAM)
            # 实例名能否和类名 一样呢
            self.clientsocket.connect(self.addr)
        def rec(self):
            while 1:
                rdata = self.clientsocket.recv(self.buffsize)
                print("rec from ser: ", rdata.decode('utf8'),'
    ','press enter to continue')
    
        def send(self):
            while 1:
                data = input('send>')
    
                self.clientsocket.send(data.encode('utf8'))
    def main():
        y = myclientsocket('127.0.0.1', 21567, 1024)
        y.conn()
        t1 = threading.Thread(target=y.send, name="send")
        t2 = threading.Thread(target=y.rec, name="rec")
        t1.start()
        t2.start()
    
    if __name__ =='__main__':
        main()
  • 相关阅读:
    农夫安全第二季课程-3.vmware ESXIv2
    六、表达式:前缀&&后缀
    五、数据类型(1):整数&&带小数点的数
    四、变量和常量
    三、简单的输入输出
    二、第一个C程序:Hello World!
    一、环境的安装Dev-C++
    .Net基础之5——复杂数据类型
    .Net基础之4——流程控制
    .Net基础之3——运算符
  • 原文地址:https://www.cnblogs.com/neo3301/p/13169869.html
Copyright © 2011-2022 走看看