Что такое значение 0 в параметрах - String message = new String (recievepacket.getData (), 0, recievepacket.getLength ()); - PullRequest
0 голосов
/ 18 октября 2018

Если я использую любой другой номер вместо 0, я не смогу увидеть ни одного сообщения.Зачем использовать 0 при преобразовании полученного пакета в строку?

public class UdpClient {

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    DatagramSocket cs=new DatagramSocket();
    byte [] recievedata=new byte[512];
    String message=null;
    byte [] senddata=new byte[512];
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("client created");
    InetAddress addr=InetAddress.getByName("127.0.0.1");
    int port=9003;

    while(true) {

        System.out.println( "client says");
        message=br.readLine();

        senddata=message.getBytes();
        DatagramPacket sendpacket=new DatagramPacket(senddata, senddata.length, addr, port);
cs.send(sendpacket);        

DatagramPacket recievepacket=new DatagramPacket(recievedata, recievedata.length);
cs.receive(recievepacket);
message=new String(recievepacket.getData(), 0,recievepacket.getLength());
System.out.println("server says"+message);

    }

}
 }

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Пожалуйста, прочитайте Javadoc для String класса здесь

Оригинальный метод String

String(byte[] bytes, int offset, int length)

Parameters:
bytes - The bytes to be decoded into characters
offset - The index of the first byte to decode
length - The number of bytes to decode
0 голосов
/ 18 октября 2018

См. Javadoc из Строка класс:

String(byte[] bytes, int offset, int length)

Parameters:
bytes - The bytes to be decoded into characters
offset - The index of the first byte to decode
length - The number of bytes to decode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...