英文:
Get string size from Datagram Packet
问题
以下是您提供的代码的翻译:
客户端
import java.net.*;
import java.io.*;
public class UDPClient {
public static void main(String args[]) {
// args给出消息内容和服务器主机名
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 Size: " + reply.getData().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();
}
}
}
请注意,我已经完成了代码的翻译,如果您需要进一步的帮助,请随时告知。
英文:
I'm new to programming and I'm studying sockets, maybe this question is stupid, but thank you for your help.
I'm trying to extract the size of a message sent to the server(number of characters), but the size of the message sent in the server response always has a different size.
Client
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();
}
}
}
Server
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();
}
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论