From Tomasz Żok

WprowadzenieDoInformatyki: SieciKomputerowe

Treść zadania

Przykład poprawnego działania

Praktyczne informacje

Teoria

Projekt w CodeBlocks

  1. Projekt serwera: Attach:Client.zip
  2. Projekt klienta: Attach:Server.zip
  3. Wersja Linuksowa (serwer + klient): Attach:tcp.tar.gz
  4. Należy w programie dodać linię:
    #include <winsock2.h>
  5. Należy kliknąć prawym przyciskiem myszy na nazwie projektu i wybrać "Build options". W oknie należy wskazać zakładkę "Linker settings" i tam dodać (przycisk "Add") bibliotekę o nazwie: ws2_32

Kod serwera

  1. Przygotuj środowisko:
    WSADATA wsadata;
    WSAStartup(MAKEWORD(2, 2), &wsadata);
  2. Stwórz gniazdo:
    SOCKET tcpsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  3. Zdefiniuj adres:
    SOCKADDR_IN address;
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = inet_addr("127.0.0.1");
    address.sin_port = htons(8080);
  4. Powiąż ze sobą gniazdo i adres:
    bind(tcpsocket, (SOCKADDR*)(&address), sizeof(address));
  5. Oznacz gniazdo jako nasłuchujące:
    listen(tcpsocket, 1);
  6. Zakceptuj połączenie:
    tcpsocket = accept(tcpsocket, NULL, NULL);
  7. Komunikacja
  8. Zamknij gniazdo:
    shutdown(tcpsocket, SD_BOTH);
    closesocket(tcpsocket);
    WSACleanup();

Kod klienta

  1. Przygotuj środowisko:
    WSADATA wsadata;
    WSAStartup(MAKEWORD(2, 2), &wsadata);
  2. Stwórz gniazdo:
    SOCKET tcpsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  3. Zdefiniuj adres:
    SOCKADDR_IN address;
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = inet_addr("127.0.0.1");
    address.sin_port = htons(8080);
  4. Połącz się z wybranym adresem:
    connect(tcpsocket, (SOCKADDR*)(&address), sizeof(address));
  5. Komunikacja
  6. Zamknij gniazdo:
    shutdown(tcpsocket, SD_BOTH);
    closesocket(tcpsocket);
    WSACleanup();

Kod do komunikacji

Retrieved from http://www.cs.put.poznan.pl/tzok/wiki/index.php?n=WprowadzenieDoInformatyki.SieciKomputerowe
Page last modified on 2017 Jan Mon 16 09:31