Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <WS2tcpip.h>
- #pragma comment (lib, "ws2_32.lib")
- void serverUDP()
- {
- //Uruchomienie Winsocku
- WSADATA data;
- WORD version = MAKEWORD(2, 2);
- int ws0k = WSAStartup(version, &data);
- if (ws0k != 0)
- {
- std::cout << "Nie mozna uruchomic Winsocku!" << ws0k << "\n";
- }
- //Podlaczenie wejsc pod adres ip i porty
- SOCKET in = socket(AF_INET, SOCK_DGRAM, 0);
- sockaddr_in serverHint;
- serverHint.sin_addr.S_un.S_addr = ADDR_ANY;
- serverHint.sin_family = AF_INET;
- serverHint.sin_port = htons(54000); //konwersja z little do big endian
- if (bind(in, (sockaddr*)& serverHint, sizeof(serverHint)) == SOCKET_ERROR)
- {
- std::cout << "Can't bind socket! " << WSAGetLastError() << '\n';
- return;
- }
- sockaddr_in client;
- int clientLength = sizeof(client);
- char buf[1024];
- while (true)
- {
- ZeroMemory(&client, clientLength); //czyszczenie struktury klienta
- ZeroMemory(buf, 1024); //czyszczenie bufera
- std::cout << "dGddgFD\n";
- //czekanie na wiadomosc
- int bytesIn = recvfrom(in, buf, 1024, 0, (sockaddr*)& client, &clientLength);
- if (bytesIn == SOCKET_ERROR)
- {
- std::cout << "Error receiving from client " << WSAGetLastError() << '\n';
- continue;
- }
- //wyswietlenie wiadomosci i informacji klienta
- char clientIp[256]; //tworzenie obszaru do konwersji adresu
- ZeroMemory(clientIp, 256);
- //konwersja z array do chars
- inet_ntop(AF_INET, &client.sin_addr, clientIp, 256);
- //wyswietlenie wiadomosci/kto ja wyslal
- std::cout << "Message recv from " << clientIp << " : " << buf << '\n';
- }
- //zamkniecie polaczenia
- closesocket(in);
- WSACleanup();
- }
- int main()
- {
- serverUDP();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement