簡體   English   中英

使用python從客戶端向服務器發送數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM