Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // broadcastszmato.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
- //
- #include "pch.h"
- #include <iostream>
- #include <WinSock.h>
- #include <conio.h>
- #include <string>
- #pragma comment (lib,"ws2_32.lib")
- #pragma pack(1)
- using namespace std;
- void ErrorInfo(const char * const functionName, int errorCode, bool showIfValid = false)
- {
- if (errorCode == 0 && !showIfValid) return;
- char buffer[1024];
- FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, errorCode, 0, buffer, sizeof(buffer) - 1, nullptr);
- cout << "Blad funkcji: " << functionName << endl << "Kod bledu : " << errorCode << endl << buffer << endl;
- }
- int main()
- {
- setlocale(LC_ALL, "Polish");
- WSADATA ws;
- int blad = WSAStartup(MAKEWORD(2, 2), &ws);
- ErrorInfo("wsastartup", blad);
- SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (s != SOCKET_ERROR)
- {
- sockaddr_in addr = { 0 };
- addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.255");
- addr.sin_family = AF_INET;
- addr.sin_port = htons(7600);
- //bind(s, (sockaddr*)&addr, sizeof(addr));
- ErrorInfo("bind", WSAGetLastError());
- sockaddr_in addr2 = { 0 };
- addr2.sin_addr.S_un.S_addr = inet_addr("192.168.0.13");
- addr2.sin_family = AF_INET;
- addr2.sin_port = htons(7600);
- sockaddr_in addr3 = { 0 };
- addr3.sin_addr.S_un.S_addr = inet_addr("192.168.0.255");
- addr3.sin_family = AF_INET;
- addr3.sin_port = htons(7600);
- char buffer[2048] = { 0 };
- int addrSize = sizeof(addr);
- int bytesnumber;
- timeval time = { 0,100000 };
- fd_set set;
- char zadanie[2];
- char potwierdzenie[2];
- zadanie[0] = 0x30;
- zadanie[1] = 0xFF;
- potwierdzenie[0] = 0x30;
- potwierdzenie[1] = 0x01;
- string odb;
- buffer[0] = 0x30;
- strcpy(&buffer[1], "Witam Wszystkich");
- sendto(s, buffer, strlen(buffer), 0, (sockaddr*)&addr, addrSize);
- bool active = true;
- while (active)
- {
- FD_ZERO(&set);
- FD_SET(s, &set);
- if (select(0, &set, 0, 0, &time) > 0)
- {
- if (FD_ISSET(s, &set))
- {
- bytesnumber = recvfrom(s, buffer, sizeof(buffer), 0, (sockaddr*)&addr3, &addrSize);
- if (bytesnumber > 0)
- {
- cout << endl << "n>0" << endl;
- odb = "";
- buffer[bytesnumber] = 0;
- if (buffer[0] = 0x30)
- {
- switch (buffer[1])
- {
- case 0x01:
- break;
- case 0xFF:
- break;
- default:
- odb = *(buffer + 2);
- break;
- }
- cout << "Wiadomosc odebrana :" << buffer;
- }
- }
- }
- }
- if (_kbhit())
- {
- switch (_getch())
- {
- case 27: //escape
- active = false;
- break;
- case 32: //space
- buffer[0] = 0x30;
- strcpy(&buffer[1], "Witam Wszystkich");
- sendto(s, buffer, strlen(buffer), 0, (sockaddr*)&addr, sizeof(addr));
- break;
- case 13: //enter
- sendto(s, (char*)&zadanie, sizeof(zadanie), 0, (sockaddr*)&addr2, sizeof(addr2));
- break;
- }
- }
- }
- }
- else
- {
- ErrorInfo("socket", WSAGetLastError());
- }
- WSACleanup();
- _getch();
- return 0;
- }
- // Uruchomienie programu: Ctrl + F5 lub menu Debugowanie > Uruchom bez debugowania
- // Debugowanie programu: F5 lub menu Debugowanie > Rozpocznij debugowanie
- // Porady dotyczące rozpoczynania pracy:
- // 1. Użyj okna Eksploratora rozwiązań, aby dodać pliki i zarządzać nimi
- // 2. Użyj okna programu Team Explorer, aby nawiązać połączenie z kontrolą źródła
- // 3. Użyj okna Dane wyjściowe, aby sprawdzić dane wyjściowe kompilacji i inne komunikaty
- // 4. Użyj okna Lista błędów, aby zobaczyć błędy
- // 5. Wybierz pozycję Projekt > Dodaj nowy element, aby utworzyć nowe pliki kodu, lub wybierz pozycję Projekt > Dodaj istniejący element, aby dodać istniejące pliku kodu do projektu
- // 6. Aby w przyszłości ponownie otworzyć ten projekt, przejdź do pozycji Plik > Otwórz > Projekt i wybierz plik sln
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement