Я новичок в программировании и изучаю сокеты, может это глупый вопрос, но спасибо за помощь.
Я пытаюсь извлечь размер сообщения, отправленного на сервер (количество символов), но размер сообщения, отправленного в ответе сервера, всегда имеет другой размер.
Клиент
import java.net.*;
import java.io.*;
public class UDPClient {
public static void main(String args[]) {
// args give message contents and server hostname
if (args.length != 2) {
System.err.println("Usage: java UDPClient 'Text Message' <server hostname>");
System.exit(1);
}
DatagramSocket aSocket = null;
try {
aSocket = new DatagramSocket();
byte[] m = args[0].getBytes();
InetAddress aHost = InetAddress.getByName(args[1]);
int serverPort = 6789;
DatagramPacket request = new DatagramPacket(m, m.length, aHost, serverPort);
aSocket.send(request);
byte[] buffer = new byte[1000];
DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
aSocket.receive(reply);
System.out.println("Reply: " + new String(reply.getData()));
System.out.println("Reply: " + reply.getData().toString().length());
} catch (SocketException e) {
System.out.println("Socket: " + e.getMessage());
} catch (IOException e) {
System.out.println("IO: " + e.getMessage());
} finally {
if (aSocket != null)
aSocket.close();
}
}
}
Сервер
import java.net.*;
import java.io.*;
public class UDPServer {
public static void main(String args[]) {
DatagramSocket aSocket = null;
try {
aSocket = new DatagramSocket(6789);
byte[] buffer = new byte[1000];
while (true) {
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
aSocket.receive(request);
String m = new String(request.getData()).replaceAll(" ", "");
int tam = m.length();
DatagramPacket reply = new DatagramPacket(request.getData(), tam, request.getAddress(),
request.getPort());
aSocket.send(reply);
}
} catch (SocketException e) {
System.out.println("Socket: " + e.getMessage());
} catch (IOException e) {
System.out.println("IO: " + e.getMessage());
} finally {
if (aSocket != null)
aSocket.close();
}
}
}