Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <winsock.h>
- #include <iostream>
- #include <vector>
- #include <sstream>
- #pragma comment (lib,"ws2_32.lib")
- using namespace std;
- struct wspolrzedne
- {
- double x, y;
- };
- void parseData(stringstream &konwerter, wspolrzedne &wsp, int i)
- {
- while (i--)
- {
- string buff, value1, value2;
- konwerter >> buff;
- if (i == 1)
- {
- value1 = buff.substr(buff.find('(') + 1, buff.find(",") - 1);
- //buff = buff.substr(0, buff.find('('));
- wsp.x = atof(value1.c_str());
- }
- if (i == 0)
- {
- value2 = buff.substr(buff.find(' ') + 1, buff.find(")") - buff.find(" ") - 1);
- wsp.y = atof(value2.c_str());
- }
- }
- }
- int main()
- {
- WSADATA wsaData;
- int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (result != NO_ERROR)
- {
- cout << "\nBiblioteka WinSock zainicjalizowana niepoprawnie. Kod bledu: " + WSAGetLastError() << endl;
- return 0;
- }
- cout << "\nBiblioteka WinSock zainicjalizowana poprawnie." << endl;
- char sendBuff[1024];
- char receiveBuff[1024];
- int SenderAddrSize;
- int iResult;
- SOCKET _socket = INVALID_SOCKET;
- sockaddr_in sockAddr;
- _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (_socket == INVALID_SOCKET)
- {
- cout << "\nGniazdo utworzone niepoprawnie. Kod bledu: " + WSAGetLastError() << endl;
- WSACleanup();
- return 0;
- }
- cout << "\nGniazdo utworzone poprawnie." << endl;
- sockAddr.sin_family = AF_INET;
- sockAddr.sin_port = htons(7404);
- sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- SenderAddrSize = sizeof(sockAddr);
- while (true)
- {
- printf("\n\n> ");
- cin >> sendBuff;
- //if (strcmp(sendBuff, "exit") == 0)
- // break;
- iResult = sendto(_socket, sendBuff, 1024, 0, (SOCKADDR *)& sockAddr, sizeof(sockAddr));
- if (iResult == SOCKET_ERROR)
- {
- cout << "\nNieudana proba wyslania datagramu. Kod bledu: " + WSAGetLastError() << endl;
- continue;
- }
- if (strcmp(sendBuff, "exit") == 0)
- break;
- const int size = 20;
- double liczby[size];
- if(strcmp(sendBuff, "TEXT") == 0) iResult = recvfrom(_socket, (char*)receiveBuff, 1024, 0, (SOCKADDR *)& sockAddr, &SenderAddrSize);
- //else if(strcmp(sendBuff, "BIN") == 0) iResult = recvfrom(_socket, (char*)&liczby, sizeof(double) * size, 0, (SOCKADDR *)& sockAddr, &SenderAddrSize);
- if (iResult == SOCKET_ERROR)
- {
- cout << "\nNieudana proba odebrania datagramu. Kod bledu: " + WSAGetLastError() << endl;
- continue;
- }
- if (strncmp(receiveBuff, "UNKNOWN COMMAND", 15) == 0)
- {
- printf("\nNie rozpoznano komendy\n");
- continue;
- }
- stringstream konwerter = stringstream(receiveBuff);
- cout << konwerter.str() << endl;
- char typ;
- konwerter >> typ;
- if (typ == 'T')
- {
- vector<double> liczby;
- while (!konwerter.eof())
- {
- static double number;
- konwerter >> number;
- liczby.push_back(number);
- }
- int sum = 0;
- for (int i = 0; i < liczby.size(); i++)
- {
- sum += liczby[i];
- }
- cout << "calkowity czas: " << sum << "s" << endl;
- }
- else if (typ == 'M')
- {
- wspolrzedne wsp[20];
- int i = 0;
- while (!konwerter.eof())
- {
- parseData(konwerter, wsp[i], 2);
- printf("\nOdebrano: x = %.2f y = %.2f", wsp[i].x, wsp[i].y);
- i++;
- }
- cout << endl << "elementy: " << i << endl;
- for (int j = 0; j < i; j++)
- {
- printf("sprawdzenie: x = %.2f y = %.2f\n",wsp[j].x, wsp[j].y);
- }
- double droga = 0;
- for (int j = 0; j < i-1; j++)
- {
- double dr = sqrt(((wsp[j + 1].x - wsp[j].x)*(wsp[j + 1].x - wsp[j].x)) + ((wsp[j + 1].y - wsp[j].y)*(wsp[j + 1].y - wsp[j].y)));
- droga += dr;
- }
- cout << endl << endl << "odleglosc: " << droga << endl;
- }
- }
- shutdown(_socket, 2);
- iResult = closesocket(_socket);
- if (iResult == SOCKET_ERROR)
- {
- cout << "Nieudana proba zamknięcia gniazda. Kod bledu: %d" + WSAGetLastError() << endl;
- }
- WSACleanup();
- cout << "\nUsunieto z pamieci biblioteke WinSock." << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement