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