簡體   English   中英

在Python服務器和Android客戶端之間使用套接字進行操作

[英]Operating with Sockets between Python server and Android client

我正在嘗試通過TCP套接字將復雜的可變數量的數據從Python服務器發送到Android客戶端。

由於我要發送可變數量的數據,因此必須在數據前加上消息的長度,然后在Android端,我必須先讀取該前綴,然后再讀取這些字節數作為流。
我對嗎?

所以這是我在服務器端(Python)上的操作方式:

def send_msg(sock, msg):
    msg = struct.pack('>I', len(msg)) + msg
    sock.sendall(msg)

但是我的Java很弱,我無法弄清楚如何在客戶端接收它。

有什么幫助嗎?

沒那么難的家伙,首先,您必須將要發送的數據大小以整數/長值形式發送,而不是字符串。 其次,在連接到服務器后的客戶端中,獲取(讀取)一個int / long值,該值指示應發送的數據量,然后等待x個字節。 雖然我建議您只使用\\r作為字符串發送消息,然后在客戶端讀取一行數據,直到達到\\r為止,所以以這種方式,您將首先忽略數據的大小。

在Java中,您可能需要這些家伙。

void Connect throws Exception{
DataInputStream dis;
DataOutputStream dos;
Socket s=new Socket("176.12.0.36",8903);//to connect address,port
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
//sending anything to the server with dos
int _sizeOfMessage=dis.readInt();//sends int value from server, no string
byte[] _data=new byte[_sizeOfMessage];
dis.read(_data);//filling the buffer
//do some business with _data
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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