2021-12-16 tcp通信 python

2021-12-16 tcp通信 python,第1张

2021-12-16 tcp通信 python 这个是ESP32上的TCP服务器写法,前面是用来联网的,后面是服务器监听
import time
import network
time.sleep(5) #防卡死延时
class wlan_ever(object):
    def __init__(self,name,password): #传入宽带账号,密码
        self.wlan_is_connect=0
        self.name = name
        self.password =password
    def threadRun1(self):  #联网,传入账号密码
        print('网络线程启动')
        wl=network.WLAN(network.STA_IF)
        wl.active(True)
        wl.disconnect()
        time.sleep(0.5)
        wl.connect(self.name,self.password)
        while 1:
            self.wlan_is_connect=wl.isconnected()
            if self.wlan_is_connect :
                print(wl.ifconfig())
                break
w= wlan_ever('300king','13704677369')
if w.wlan_is_connect:
    pass
else:
    w.threadRun1()

print('联网成功')





**************************************************************
import socket   #如果是PC机直接从这里开始用下面的就行
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  #设定模式服务端
sock.bind(('',9889))                    #绑定本机ip  和端口
sock.listen(5)                          # 监听启动,队列5
dat=b''
while 1:                                #外层循环,接收连接
    print('准备接收')
    connection,address = sock.accept()  #没接收数据会阻塞在这里
      
    print ("Connect from:", address)    #有链接
    connection.settimeout(50)            #超时设定5秒  ,时间根据业务逻辑任意调节
    try:                              
        while 1:                        #内圈循环,用来持续接收数据
            data=connection.recv(10240)  #数据缓存池中的数据传入
            print(len(data))               
            dat=dat+data                #dat数据预先定义好二进制类型,持续接收数据
            if data.find(b'#1end1#')>-1:#发现结尾标志位就进入判断
                dat=dat[:-7]            #去掉标志位,其余数据存储
                print('end')
                break
        with open ('3333.jpg','wb') as f:
            f.write(dat)
        connection.send('ok'.encode('gbk'))          #返回数据,必须是二进制       
        dat=b''
        connection.close()              #关闭连接
    except :
        print('超时了')
        connection.close()


客户端的写法,也是ESP32 里边的所以有联网部分
import socket
import time
import network
time.sleep(5) #防卡死延时
class wlan_ever(object):
    def __init__(self,name,password): #传入宽带账号,密码
        self.wlan_is_connect=0
        self.name = name
        self.password =password
    def threadRun1(self):  #联网,传入账号密码
        print('网络线程启动')
        wl=network.WLAN(network.STA_IF)
        wl.active(True)
        wl.disconnect()
        time.sleep(0.5)
        wl.connect(self.name,self.password)
        while 1:
            self.wlan_is_connect=wl.isconnected()
            if self.wlan_is_connect :
                print(wl.ifconfig())
                break
w= wlan_ever('300king','13704677369')
if w.wlan_is_connect:
    pass
else:
    w.threadRun1()

print('联网成功')



************************************************************
import socket  #PC机使用这里开始到下面的内容
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 客户端模式
print('配置TCP')
s.connect(('192.168.3.190',9889))
print('连接服务器')
with open('3333.jpg','rb') as f: #获取发送的图片
    data=f.read()
send_data=data+b'#1end1#'     #在结尾增加结束标志位
s.sendall(send_data)             #发送数据,务必使用sendall
recvData=s.recv(1024)         #接收数据
print('接收到的数据为:', recvData) 
s.close() 


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存