2
我想通过Java套接字发送两个字节数组。我通过wireshark捕获了数据,并显示第一个字节数组发送;然而,第二,根本不发送。 我正在使用Linux Mint和Oracle的JRE(不是OpenJDK)。Java套接字无法发送两个字节数组
byte[] packet_one = new byte[] {(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x50};
byte[] packet_two = new byte[] {(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x78};
Socket sck;
DataInputStream dis;
DataOutputStream dos;
try {
sck = new Socket(IP_ADDRESS,PORT);
dis = new DataInputStream(sck.getInputStream());
dos = new DataOutputStream(sck.getOutputStream());
int recv_header = dis.ReadInt(); // This receives the correct response.
dos.write(packet_one); // Sends fine.
dos.write(packet_two); //Does not send.
int data_length = dis.readInt(); // No more data received.
}catch(Exception e) {
System.out.println("Error: " + e.getMessage());
}
因此,dos.write(packet_one)的工作原理(由wireshark确认)。写packet_two不起作用。 data_length返回0,因为我还没有收到任何数据。没有错误或异常被捕获。
我也尝试使用dos.flush(),但它没有区别。
任何想法,为什么这可能是这种情况?
你能发布接收器/客户端代码吗? – osanger
这是客户端代码。服务器的源代码不在我的控制范围之内。 – sofiax
make dos.flush();强制要写数据 – krzydyn