[C++ WinSock] Budowa serwera i klienta
Ostatnio zmodyfikowano 2020-03-17 19:30
matikwe12 Temat założony przez niniejszego użytkownika |
[C++ WinSock] Budowa serwera i klienta » 2020-03-17 18:04:50 Witam, chcę napisać program, który wysyłam ramkę UDP do drugiego. Oto kod dla pierwszego. Teraz moje pytanie jak zrobić do tego drugi, który będzie odbierać ramki. #pragma comment(lib, "Ws2_32.lib") #include <winsock2.h> #include <iostream> #include <conio.h> #include <string>
using namespace std;
class Winsock { public: WSADATA wsaData; WORD Version; Winsock() { Version = MAKEWORD( 2, 2 ); if( WSAStartup( Version, & wsaData ) == 0 ) { cout << "Inicjalizacja zakonczona sukcesem!" << endl; } else { cout << "Blad inicjalizacji!" << endl; WSACleanup(); } if( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { cout << "Nieprawidlowa wersja!"; } } ~Winsock() { WSACleanup(); cout << "Pamiec wyczyszczona!" << endl; } };
int main() { Winsock W; SOCKADDR_IN sin; SOCKET Client; Client = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); if( Client == INVALID_SOCKET ) { cout << "Nie mozna stworzyc socketa!" << endl; getch(); return 0; } memset( & sin, 0, sizeof( sin ) ); sin.sin_family = AF_INET; sin.sin_port = htons( 50000 ); char host[ 128 ] = "192.168.0.46"; hostent * he = 0; he = gethostbyname( host ); sin.sin_addr.s_addr = inet_addr( host ); const int buff = 1400; char liczba[ buff ] = "20"; for( int i = 1; i <= 20; i++ ) { int wynik = sendto( Client, itoa( i, liczba, 10 ), 10, 0,( SOCKADDR * ) & sin, sizeof( sin ) ); if( wynik == INVALID_SOCKET ) { cout << "Blad wyslania nr: " << WSAGetLastError(); closesocket( Client ); getch(); return 0; } else cout << "Wyslano " << i << "/20 wiadomosci" << endl; } cout << "Koniec programu." << endl; closesocket( Client ); getch(); return 0; }
|
|
pekfos |
» 2020-03-17 19:30:04 |
|
« 1 » |