Ich möchte eine Java-Anwendung erstellen, die die vollständigen Systeminformationen des Clientcomputers an den Servercomputer sendet. Im folgenden Programm kann ich die Aufgabe erreichen, aber die Nachricht wird geteilt, wenn sie auf eine Leerstelle stößt. Ich habe versucht, die Split-Methode zu entfernen, aber es funktioniert nicht.Wie senden Client-System-Eigenschaften an Server-Computer in Java?
Der Client sollte die Informationen Zeile für Zeile gut formatiert an den Server senden.
P.S- Ich hatte auf ein Youtube-Video-Tutorial verwiesen.
Client.java
import java.io.*;
import java.net.*;
import java.util.Properties;
public class MyClient
{
public static void main(String args[])
{
DatagramSocket datagramSocket;
try {
datagramSocket=new DatagramSocket(); //Creating Datagram socket
String message=System.getProperties().toString(); //Creating message
byte [] bytes=message.getBytes(); //Converting string message to byte format
InetAddress host= InetAddress.getByName("localhost"); //Specifying server address
int server_socket=6780; //Defining the socket tot be used
//Sending
DatagramPacket request= new DatagramPacket(bytes,bytes.length,host,server_socket);
datagramSocket.send(request);
//Receiving
byte[] buffer=new byte[1000];
DatagramPacket reply= new DatagramPacket(buffer,buffer.length);
datagramSocket.receive(reply);
//Printing the reply
System.out.println("Client Received: "+new String(reply.getData()));
//Closing the socket
datagramSocket.close();
}
catch (Exception e)
{
}
}
}
**Server.java**
import javax.xml.crypto.Data;
import java.io.*;
import java.net.*;
public class MyServer
{
public static void main(String[] args)
{
DatagramSocket datagramSocket=null;
try {
datagramSocket = new DatagramSocket(6780);
byte[] buffer = new byte[1000];
int i=0;
while (true) {
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(request);
String [] arrayMsg= (new String(request.getData())).split(" ");
byte [] sendMessage=(arrayMsg[i]+" Server Processed").getBytes();
DatagramPacket reply=new DatagramPacket(sendMessage,sendMessage.length,request.getAddress(),request.getPort());
datagramSocket.send(reply);
i++;
}
}
catch (Exception e) {
}
}
}
Sie könnten versuchen, Auf etwas anderes aufgeteilt. machen Sie etwas, das garantiert ein Token sein wird, "<+>" zum Beispiel, die Chancen, dass jemals auftreten, sind ziemlich minimal. – Stultuske
Sie müssen den Empfang außerhalb der geteilten Schleife verschieben. – EJP
Niemals Schreib-Catch (Exception e) {} Behandeln Sie Exceptions immer poperbly – Jens