Efendim şimdi benim aldığım eğitimlerin hiçbirisinde bufferlar bytelar ne bileyim dwordlar karışık şeyler yoktu adam direk array loops vesaire anlatıyor İngilizce kaynakta tamam ben hepsini biliyorum zaten, fakat iş ufak bir tcp soket ile mesajlaşma programı olunca adamın ne yaptığını anlayamıyorum.
İngilizce bilmeden ve arama motoru kullanmadan zor. Yapmak istediğiniz şeyi bu yöntemle aratırsanız yüzlerce binlerce sonuç çıkacaktır illa ki, ha bu da zaten ileri derece c++ değil, c++ ile yapılan herhangi bir şey. Karmaşık kod ise hiç değil.
Demiştim. Anlamadığınız yerleri araştırıp okuma zahmetine katlanırsanız anlayacağınıza eminim.
Sadece İngilizcem o kadar gelişmiş değil B1 seviyesi civarı
B1 teknik doküman okumak için gayet yeterli bir seviye.
Bakın yapmanız gereken çok basit.Anlamadığınız neresi var oraları teker teker aratıp öğrenmeye çalışıyorsunuz.
Mesela DWORD nedir tam olarak WSDATA neden yapmış onları bilmiyorum.
Diyelim ki ben sizin buraya ekran görüntüsü olarak yapıştırdığınız kodun ilk bölümünü anlamadım. (initwinsock bölümü yani)
The WSADATA (winsock.h) structure contains information about the Windows Sockets implementation.
learn.microsoft.com
The WSAStartup function (winsock.h) initiates use of the Winsock DLL by a process.
learn.microsoft.com
All processes (applications or DLLs) that call Winsock functions must initialize the use of the Windows Sockets DLL before making other Winsock functions calls. This also makes certain that Winsock is supported on the system.
learn.microsoft.com
Bunlara göz atıp hangisi ne işe yarıyormuş anlayabilirim. Birkaç satır başı şöyle;
The WSADATA structure contains information about the Windows Sockets implementation.
The WSAStartup function is called to initiate use of WS2_32.dll.
The WSAStartup function initiates the use of the Windows Sockets DLL by a process. The WSAStartup function returns a pointer to the WSADATA structure in the lpWSAData parameter.
int WSAStartup(
WORD wVersionRequired,
[out] LPWSADATA lpWSAData
);
The version of the Windows Sockets specification that the
Ws2_32.dll expects the caller to use. The high-order byte specifies the minor version number; the low-order byte specifies the major version number.
If the version requested by the application is equal to or higher than the lowest version supported by the Winsock DLL, the call succeeds and the Winsock DLL returns detailed information in the WSADATA structure pointed to by the lpWSAData parameter.
...
gibi şeyleri güzelce okuyorum. Bu attığım linklerde örnek kodlar da mevcut, onlara da bakıyorum.
Mesela şu koda bakıyorum (comment de eklemişler):
/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */
wVersionRequested = MAKEWORD(2, 2);
Dokümantasyonu okuduğum için bunun WinSock DLL versiyon 2.2 yi tanımlayacak değişken olduğunu anlayabiliyorum. Aynı şekilde,
err = WSAStartup(wVersionRequested, &wsaData);
kodunun eğer başarılı olursa err = 0 döneceğini ve wsaData içinde information döneceğini anlıyorum.
(C++ yıllardır bakmadım, socket programlama hakkında da bilgi sahibi değilim, hızlıca internette bu mevzudaki keywordleri aratıp ilk çıkan microsoft linklerine göz attım, yanlışım varsa kusura bakmayın, siz doğrusunu öğrenip düzeltin)
Bence bu arama, okuma ve anlama alışkanlığı video izleme tekniğinden çok daha önemli.