python用socket 接收数据问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python用socket 接收数据问题?相关的知识,希望对你有一定的参考价值。
PLC与PYTHON用socket通讯。第一次PLC发送数据为'aaaaaa',python接收正常,第二次发送'ww',接收是'wwaaaa',是缓存没清除吗?缓存如何清除呢,请回答的仔细些,看了网上很多相关回答,没搞明白,多谢。还有图中那个!f 是啥意思,f我懂 小白请教。
参考技术A 因为tcp通信的粘包问题Python Socket - 同时发送/接收消息
【中文标题】Python Socket - 同时发送/接收消息【英文标题】:Python Socket - Send/Receive messages at the same time 【发布时间】:2016-01-30 18:17:24 【问题描述】:基本上,我一直在使用套接字和线程开发一个简单的聊天室。在我的客户端中,我可以接收和发送消息,我的问题是一个循环在另一个之前出现,所以如果我发送消息,我只会在发送消息后接收数据。我希望它像任何其他聊天室一样工作,我可以在发送消息时收到消息,任何帮助都会有很大帮助。这是我的基本客户:
import socket
import sys
###########
HOST = '25.0.18.52'
PORT = 9999
###########
name = input("Enter your name: ")
s = socket.socket()
s.connect((HOST,PORT))
while 1:
message = input("Message: ")
s.send(": ".format(name, message).encode('utf-8'))
data = s.recv(1024)
a = data.decode("utf-8")
print(a)
【问题讨论】:
【参考方案1】:您应该保留 2 个线程:一个用于侦听,另一个用于接收。在您的while
循环中,您应该删除侦听器部分,并将代码保留在不同的线程中。这样您就可以同时在控制台上接收和输入。
def recv():
while True:
data = s.recv(1024).decode()
if not data: sys.exit(0)
print data
Thread(target=recv).start()
【讨论】:
以上是关于python用socket 接收数据问题?的主要内容,如果未能解决你的问题,请参考以下文章