Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <WinSock2.h>
- #include <conio.h>
- #include <stdio.h>
- #include <string.h>
- #include <vector>
- #define END WSACleanup(); getch(); return 0;
- #define END2 shutdown(gniazdo,2); closesocket(gniazdo); WSACleanup(); getch(); return 0;
- #define ESC 27
- #define SPACE 32
- #define ENTER 13
- #pragma comment(lib,"ws2_32.lib")
- using namespace std;
- struct datagram
- {
- char A;
- char imie[7];
- char Z;
- char nazwisko[9];
- };
- struct potwierdzenie
- {
- char A;
- char Z;
- };
- int main(int argc, _TCHAR* argv[])
- {
- WSAData wsaData;
- datagram *W = new datagram();
- W->A = 0x32;
- W->Z = 0x0A;
- strcpy(W->imie, "Daniel");
- strcpy(W->nazwisko, "Splawski");
- if((WSAStartup(MAKEWORD(2,2),&wsaData))!=0)
- {
- printf("Blad ladowania biblioteki : %d",WSAGetLastError());
- END
- }
- SOCKET gniazdo;
- if((gniazdo=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET)
- {
- printf("Blad ladowania gniazda : %d",WSAGetLastError());
- END2
- }
- SOCKADDR_IN client;
- client.sin_family = AF_INET;
- client.sin_addr.s_addr = INADDR_ANY;
- client.sin_port=htons(0);
- if((bind(gniazdo,(SOCKADDR*)&client,sizeof(client)))==SOCKET_ERROR)
- {
- printf("Blad bindowania gniazda : %d",WSAGetLastError());
- END2
- }
- int one = 1;
- SOCKADDR_IN serwer;
- serwer.sin_family=AF_INET;
- serwer.sin_addr.s_addr = INADDR_BROADCAST;
- serwer.sin_port=htons(7404);
- int sAddrSize = sizeof(serwer);
- setsockopt(gniazdo, SOL_SOCKET, SO_BROADCAST, (char*)&one, sizeof(one));
- timeval time = { 0, 100000 };
- fd_set set;
- FD_ZERO(&set);
- FD_SET(gniazdo, &set);
- if (SOCKET_ERROR == sendto(gniazdo, (char*)&W, sizeof(*W), 0, (SOCKADDR*)&serwer, sizeof(serwer)))
- {
- printf("blad wysylanych danych %d\n", WSAGetLastError());
- getch();
- }
- int przycisk;
- printf("dowolny przycisk aby wyslac dane || aby zakonczyc nacisnij esc\n");
- while(true)
- {
- FD_ZERO(&set);
- FD_SET(gniazdo, &set);
- if (select(0, &set, 0, 0, &time) > 0)
- {
- if (FD_ISSET(gniazdo, &set) )
- {
- recvfrom(gniazdo, buff, sizeof(buff), 0, (sockaddr*)&serwer, &sAddrSize);
- }
- }
- if (_kbhit() )
- {
- przycisk = _getch();
- if(przycisk == ESC)
- break;
- else if(przycisk == SPACE)
- {
- setsockopt(gniazdo, SOL_SOCKET, SO_BROADCAST, (char*)&one, sizeof(one));
- serwer.sin_addr.s_addr = INADDR_BROADCAST;
- if(SOCKET_ERROR == sendto(gniazdo,(char*)&W,sizeof(*W),0,(SOCKADDR*)&serwer,sizeof(serwer)))
- {
- printf("blad wysylanych danych %d\n",WSAGetLastError());
- getch();
- }
- }
- else if(przycisk == ENTER)
- {
- setsockopt(gniazdo, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one));
- serwer.sin_addr.s_addr = inet_addr("192.168.0.104");
- if (SOCKET_ERROR == recvfrom(gniazdo, (char*) &W, sizeof(*W), 0, (SOCKADDR*)&serwer, &sAddrSize))
- {
- printf("blad wysylanych danych %d\n", WSAGetLastError());
- getch();
- }
- //cout << W->A << W->imie << W->Z << W->nazwisko;
- potwierdzenie *P = new potwierdzenie();
- P->A = 0x32;
- P->Z = 0x01;
- if (SOCKET_ERROR == sendto(gniazdo, (char*)&P, sizeof(*P), 0, (SOCKADDR*)&serwer, sizeof(serwer)))
- {
- printf("blad wysylanych danych %d\n", WSAGetLastError());
- getch();
- }
- }
- }
- }
- setsockopt( gniazdo, SOL_SOCKET, SO_BROADCAST, (char*) &one, sizeof(one));
- if(SOCKET_ERROR==sendto(gniazdo,(char*)&W,sizeof(double),0,(SOCKADDR*)&serwer,sizeof(serwer)))
- {
- printf("blad wysylanych danych %d\n",WSAGetLastError());
- getch();
- }
- END2
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement