2013-10-17 32 views
1

我试图通过TCP套接字将来自我的Python服务器的复杂可变数量的数据发送到我的Android客户端。在Python服务器和Android客户端之间使用套接字运行

由于我发送的数据量是可变的,我必须在数据前加上消息的长度,然后在Android端,我必须先读取该前缀,然后读取这些数字的字节作为流。
对吗?

因此,这里是我如何做它的服务器(Python)的侧面:

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

但我的Java是相当薄弱,我想不出如何获得这个客户端上。

任何帮助?

回答

1

没有这么难的家伙,首先你要发送的数据的大小要发送为整数/长整型值,没有字符串。其次,在客户端连接到服务器后,获取(读取)一个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 
} 
相关问题