Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++ WinSock] Budowa serwera i klienta

Ostatnio zmodyfikowano 2020-03-17 19:30
Autor Wiadomość
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.

C/C++
#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;
}
P-176388
pekfos
» 2020-03-17 19:30:04
Zobacz przykłady w » Kurs WinSock, C++Tło Klient-Serwer lekcja
P-176390
« 1 »
  Strona 1 z 1