import socket
import os
import msvcrt
import time
def timeInput(text="",e="",timeFin=0.01):
result=[]
done=time.time() +timeFin
print(text,end=e)
while 1:
if msvcrt.kbhit():
echo=msvcrt.getch().decode('ASCII')
result.append(echo)
time.sleep(0.1)
else:
if time.time() > done:
st=""
for i in result:
st=st+str(i)
st=st.replace("`b","")
return st
#username=("Username? ")
#x, y, width, height, username, map position, list position
try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('10.0.0.7', 25565))
while 1:
#data = client_socket.recv(512)
#key=timeInput()
#code="player,100,200,30,30,player2,0,1"
code="chat,hi,Marc"
client_socket.send(bytes(code,"UTF-8"))
except Exception as e:
print("ERROR: "+str(e))
由于某些原因,当我尝试在python中连接到我的服务器时,它正确连接但不会连续发送chat,hi,Marc
到服务器。我不知道为什么这不起作用,提前谢谢!
答案 0 :(得分:0)
socket.send()不保证所有字节都已发送(或者更好地说,所有字节都已复制到传出缓冲区)。发送()块直到至少可以发送一个字符。
你可能因为循环而快速填充out缓冲区,然后添加消息的某些部分,然后阻塞直到释放一些缓冲区空间。
因此,您需要阅读send()的结果。如果是> 0,这是你发送的字节数,所以你必须再次发送()剩下的部分。如果send()返回< = 0,则关闭连接,您应该退出循环。