WEBVTT

1
00:05.410 --> 00:07.810
Evet, çocuklar, şimdi tartışalım.

2
00:09.680 --> 00:12.290
Aslında bir liste oluşturan bir fonksiyon,
doğru değil.

3
00:12.770 --> 00:13.130
Doğru.

4
00:13.640 --> 00:18.410
Böylece dosya ağında olduğumu
görebilirsiniz, görmeye başlamazsınız.

5
00:18.860 --> 00:24.980
Yani bu, tüm ağ mantığını uygulayan
dosyadır, örneğin, paket varışları için

6
00:24.980 --> 00:28.570
bir ağ soketini dinleyen bir dinleyici iş
parçacığı oluşturmak gibi.

7
00:28.610 --> 00:29.000
Doğru.

8
00:29.660 --> 00:34.190
Bu, ana programımızda dinleyici iş
parçacıklarımızı oluşturmak için
kullandığımız fonksiyondur.

9
00:34.850 --> 00:39.260
Bu yüzden bu derste yapacağımız şey, nasıl
oluşturulacağı hakkında bir

10
00:39.260 --> 00:42.740
fikir edinmeniz için bu fonksiyonun
uygulamasını hızlıca gözden geçirmek
olacak.

11
00:43.750 --> 00:49.810
Şu anda paket dinleyici tehditleri, bu kod
parçasını anlamak, soket programlama, yani
bir

12
00:49.810 --> 00:54.040
futbol programının nasıl yazılacağı
konusunda temel bir anlayışa sahip
olmanızı da gerektiriyor.

13
00:54.520 --> 01:00.670
UDP soketleri ya da başka bir şey
kullanarak çok basit bir

14
01:00.670 --> 01:02.710
futbol programı yazmış olsanız bile bu kod
parçasını anlayabilmeniz gerekir.

15
01:05.690 --> 01:10.910
Bu, ana programımızda paket dinleyici iş
parçacıkları oluşturmak için

16
01:11.630 --> 01:14.250
kullandığımız API'dir ve bu API üç argüman
ister.

17
01:14.270 --> 01:20.120
İlk argüman IP adresimiz, ikinci argüman
ise port numarasıdır, değil mi?
Dolayısıyla, bir paket

18
01:21.870 --> 01:26.640
dinleyici iş parçacığı oluşturduğunuzda,
paket dinleyici iş parçacığı bir IP
adresini ve bir

19
01:26.640 --> 01:30.300
bağlantı noktası numarasını dinlemelidir;
bu da birinci ve ikinci bağımsız değişken
olarak ayrıştırılır.

20
01:30.870 --> 01:35.700
Ve bu paket dinleyicisi harici ağdan gelen
herhangi bir

21
01:35.700 --> 01:42.450
paketi vergilendirmeye çalıştığında, bu
paket dinleyicisi paketle ilgili

22
01:42.450 --> 01:43.050
olarak uygulamayı bilgilendirmek için bu
işlevi çağırmayı dener.

23
01:43.740 --> 01:47.190
Ve bu API pakete bir işaretçi döndürür.

24
01:47.190 --> 01:48.540
Okumayalım, değil mi? Yani temel olarak,
bu

25
01:50.240 --> 01:54.140
API ilk etapta bir iş parçacığı oluşturur.

26
01:54.530 --> 01:56.630
Artık bir iş parçacığının nasıl
oluşturulacağını zaten biliyoruz.

27
01:57.230 --> 02:01.550
İşte burada, veri test modunda bir iş
parçacığı oluşturmaya çalışıyorum, değil

28
02:02.920 --> 02:07.270
mi? Ve bundan sonra, bazı veri yapıları
için bir bellek ayırıyorum.

29
02:07.600 --> 02:15.430
Dikkat ederseniz bu veri yapısı üçüncü
argüman paketi

30
02:15.430 --> 02:21.760
olarak adlandırılmaktadır, yani bu bizim
üçüncü fonksiyona argüman

31
02:21.760 --> 02:22.300
olarak ayrıştırılması gereken tüm
bilgileri saklayabileceğimiz veri
yapımızdır.

32
02:22.690 --> 02:23.050
Doğru.

33
02:23.560 --> 02:27.730
Dolayısıyla, standart yapının
uygulanmasını görmek istiyorsanız,

34
02:27.730 --> 02:28.180
yalnızca bu dosya içinde tanımlanmıştır.

35
02:28.900 --> 02:31.150
İşte yapı durumunun tanımı.

36
02:31.150 --> 02:36.700
Ve burada bu durum yapısının yalnızca üç
üyesi olduğunu görebilirsiniz:

37
02:36.700 --> 02:40.750
IP adresi, bağlantı noktası numarası ve
alma işlevinin işaretçisi, değil

38
02:43.130 --> 02:49.670
mi? Yani temel olarak, bu üç bilgi Start
API'yi oluşturan

39
02:49.680 --> 02:50.810
UDP sunucusuna argüman olarak aktardığınız
şeydir, değil mi? Yani burada

40
02:51.410 --> 02:58.370
yaptığımız şey, tüm argümanları aynı yapı
veya aynı nesne

41
02:58.370 --> 03:01.760
içinde bir araya getirebilmek için bir
bellek tahsis etmektir.

42
03:02.240 --> 03:05.270
Bunun nedeni, tehdit yaratıldığı sırada.

43
03:06.750 --> 03:11.760
Tüm bu bilgileri right tarafından
oluşturulacak tehdit için tek bir argüman
olarak iletebiliriz.

44
03:12.840 --> 03:17.520
Ve bu API, aslında bir iş parçacığı
tanıtıcısı olan üçlüye bir işaretçi
döndürür.

45
03:18.440 --> 03:23.690
Yani bu, işlev görmeye çalışan işlevdir ve
aslında soketi oluşturmak ve bunu

46
03:23.690 --> 03:30.020
sonlu bir süre için dinlemek için tüm ağ
mantığını uyguladığımız işlevdir.

47
03:31.640 --> 03:34.520
Şimdi bu fonksiyonun uygulamasını gözden
geçirelim.

48
03:35.500 --> 03:39.520
Ve burada bunun bir tehdit işlevi olan bir
işlev olduğunu görebilirsiniz.

49
03:40.060 --> 03:46.510
Ve yine, veri yapısını orijinal veri
türüne geri yazarak açacağım ve

50
03:46.510 --> 03:51.010
ardından bir dinleyici iş parçacığı
oluşturmak için gereken tüm bilgileri
çıkaracağım.

51
03:51.820 --> 03:56.680
Ve elbette, gerekli olmadığında çok doğru
olan belleği boşaltmanız gerekir.

52
03:57.370 --> 04:01.090
İşte burada bir UDP soketi oluşturuyorum,
tamam mı? Ve burada

53
04:01.090 --> 04:08.170
bu UDP soketini IP adresi ve port numarası
ile bağlıyorum,

54
04:09.160 --> 04:14.620
değil mi? Yani yine, bu yalnızca soket
programlamaya biraz

55
04:14.830 --> 04:16.150
aşina iseniz sizin için anlamlı olacak bir
kod parçasıdır.

56
04:16.450 --> 04:16.840
Değil mi? Ve paketimiz, hadi bunu
denemeyelim, paket

57
04:18.930 --> 04:24.600
dinleyici iş parçacığında paketi
dinleyeceği için, alınan

58
04:24.600 --> 04:29.370
paketi kaydedebileceği bir miktar belleğe
ihtiyaç duyar.

59
04:29.910 --> 04:32.370
Yani bu belleği alıcı tampon olarak
kullanıyoruz.

60
04:32.730 --> 04:33.090
Doğru.

61
04:33.870 --> 04:39.270
Ve UDP dinleyicimizin denediğini ve sonsuz
bir döngüye girdiğini görebilirsiniz.

62
04:39.810 --> 04:45.750
Ve bu sonsuz döngü içinde, paket dinleyici
iş parçacığımızın

63
04:45.750 --> 04:47.570
şu andan itibaren alınan bir API'yi
çağırdığını görebilirsiniz.

64
04:47.580 --> 04:55.170
Bu API'den alınan verinin bloklama yapan
bir API olduğuna dikkat edin,

65
04:55.170 --> 04:59.880
yani veri bu UDP soketine ulaşana kadar
dinleyici iş parçacığımız bloklamaya

66
05:02.000 --> 05:09.140
devam edecektir, değil mi? Dolayısıyla 278
numaralı satır yalnızca paket dinleyici

67
05:09.140 --> 05:12.500
iş parçacığımız bir paket aldığında ve bu
paket bu alma tamponunda

68
05:13.800 --> 05:20.430
mevcut olduğunda yürütülecektir, değil mi?
Dinleyici iş parçacığımız paketi
aldığında, uygulamaya

69
05:20.430 --> 05:27.720
hangi paketin alındığını bildirmek için
uygulamaya özel receive fonksiyonunu
çağıracağız,

70
05:28.240 --> 05:30.450
böylece uygulama artık bu paket üzerinde
özel bir işlem gerçekleştirebilecektir.

71
05:30.600 --> 05:30.960
Tamam mı? Paketin genel mimarisi ya da
tasarımı

72
05:31.930 --> 05:37.390
budur, denemeyelim, tek gereken Pietra
create API kullanarak

73
05:37.390 --> 05:44.920
yeni bir deneme oluşturmanız ve soketi
bağlama adı

74
05:45.220 --> 05:46.420
verilen soket sistemini kullanarak bir
soket oluşturmanızdır.

75
05:46.810 --> 05:50.560
Alınan paketi kaydetmek için bellek
tamponunu alın.

76
05:50.950 --> 05:56.950
Ve son olarak paketin alınmasını beklemek
için received from API'sini çağırın.

77
05:57.280 --> 05:57.670
Değil mi? Ve paket ulaştığında, bir geri
arama

78
05:57.880 --> 06:04.660
işlevi kullanarak uygulamayı
bilgilendirmek bu kadar basittir.

79
06:06.000 --> 06:12.060
Şimdi, burada dikkat edilmesi gereken bir
husus, bu özel mahkemede, tehdit

80
06:12.060 --> 06:14.310
iptali ile ilgili herhangi bir şey
kullanmadım, değil mi? Dolayısıyla, bu

81
06:15.030 --> 06:21.000
ders videosunun ardından gelen ödevin bir
parçası olarak, paketinizin konsey etiketi

82
06:21.000 --> 06:25.110
tehdidi olarak okunmadığını oluşturmak
için bu dosyada değişiklikler yapmanız
gerekir.

83
06:25.950 --> 06:28.830
Tehdit iptali ile ilgili bölümleri zaten
yapmıştık.

84
06:29.100 --> 06:30.570
Bunu tekrar gözden geçirelim.


