-
Notifications
You must be signed in to change notification settings - Fork 0
/
Client.java
37 lines (35 loc) · 2.67 KB
/
Client.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.net.*; //Network işlemleri için Java'da kullanılan kütüphane
public class Client
{
public static void main(String[] args) throws Exception
{
if (args.length < 3) //Programın çalışabilmesi için 3 farklı parametre girilmesi gerekiyor. Burada bunun kontrolü sağlandı.
{
System.out.println("Hata! Doğru kullanım aşağıdaki gibidir:\njava Client <Hedef IP Adresi> <Hedef Port Numarası> <Ping Atma Sayısı>");
return;
}
String HedefIP = new String(args[0]); //Hedef IP adresi programın ilk parametresidir.
int HedefPort = Integer.parseInt(args[1]); //Port numarası programın ikinci parametresidir. args String olduğu için int'e çevirildi.
DatagramSocket clientSocket = new DatagramSocket(); // Socket oluşturuldu.
InetAddress IPAdress = InetAddress.getByName(HedefIP); //Hedef IP adresi için InetAddress structure'ı oluşturuldu
String SendText = new String(); //Gönderilecek örnek veri için String dizisi tanımlandı.
SendText = "11111111111111111111111111111111"; //32 byte'ın hepsi 1 ile dolduruldu.
byte [] sendData = new byte[32]; //Gelen veriyi tutmak için bir byte dizisi oluşturuldu.
byte [] receiveData = new byte[32]; //Gönderilecek veri için byte dizisi oluşturuldu.
sendData = SendText.getBytes(); //String verisi byte formatına çevrildi.
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAdress, HedefPort); //Gönderilecek UDP paketi oluşturuldu.
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); //Sunucudan alınacak UDP paketi oluşturuldu.
for (int i=1;i <= Integer.parseInt(args[2]);i++) //args[2] parametresi ile ping işleminin kaç defa yapılacağı bilgisi kullanıcıdan alınmıştı.
{ //Burdaki for döngüsü ile istenilen ping sayısı kadar işlem tekrarlanacak.
clientSocket.send(sendPacket); //Oluşturulan UDP paketi burada gönderildi.
long startTime = System.nanoTime(); //Gönderildikten hemen sonra nano saniye cinsinden zaman damgası alındı.
clientSocket.receive(receivePacket); //Sunucudan yanıt paketi alındı.
long difference = System.nanoTime() - startTime; //şu anki zaman ile başlangıç zamanı arasındaki süre ölçüldü.
System.out.println("-------------------------------------------\nServer IP Adresi: " + receivePacket.getAddress().getHostAddress());
System.out.println("Server Port Numarası: " + receivePacket.getPort()); //
System.out.println("Gelen Veri Boyutu: " + receivePacket.getLength() + " bytes"); //Elde edilen bilgiler istemci ekranında gösterildi.
System.out.println("Toplam Zaman: " + difference/1000000 + " ms"); //
}
clientSocket.close(); //for döngüsü bittikten sonra socket kapatıldı.
}
}