[英]Send data to server from client in python
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
。 我不知道為什么這不起作用,在此先感謝!
socket.send()不能保證所有字節都已發送(或者更好的說,所有字節都已復制到輸出緩沖區)。 send()阻塞,直到可以發送至少一個字符為止。
您可能由於循環而快速填充了out緩沖區,然后添加了消息的某些部分,然后阻塞直到釋放了一些緩沖區空間。
因此,您需要讀取send()的結果。 如果它大於0,則表示已發送了多少字節,因此必須再次發送send()剩余部分。 如果send()返回<= 0,則連接已關閉,您應該退出循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.