我想创建一个java应用程序,将客户端计算机的完整系统信息发送到服务器计算机。在下面的程序中,我能够完成任务,但是当消息遇到一个空格时,它会被拆分。我试图删除分割方法,但它不起作用。
客户端应该以一行一行的格式将信息发送到服务器。
p、 我参考了youtube视频教程。
客户端.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) {
}
}
}
1条答案
按热度按时间tgabmvqs1#
如果要避免在每个空间拆分为多个数据包,请删除在遇到某些空间时拆分为数据包的循环:
因此,请更换:
签署人:
另一种方法是在行尾分开。
不要忘记,使用这样的udp,您可以:
无序数据包
拥塞条件下cas中的丢包