1

我正在尝试通过 TCP 套接字将复杂的可变数量的数据从我的 Python 服务器发送到我的 Android 客户端。

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

所以这就是我在服务器(Python)端的做法:

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

但是我的 Java 很弱,我不知道如何在客户端接收它。

有什么帮助吗?

4

1 回答 1

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
}
于 2013-10-17T21:53:29.787 回答