Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <string>
- #include <stdio.h>
- #include <cstdio>
- #include <iostream>
- #include <time.h>
- #include <winsock.h>
- #include <conio.h>
- #include <vector>
- #include <locale.h>
- #pragma comment(lib, "ws2_32.lib")
- using namespace std;
- void wyswietl(const int *tab, const int n)
- {
- for (int i = 0; i < n; i++)
- {
- cout << tab[i] << endl;
- }
- }
- void sortuj(int *tab, const int size, const int znak)
- {
- if (znak > 0)
- for (int i = size - 1; i >= 0; i--)
- {
- int temp = tab[0];
- int id = 0;
- for (int j = 0; j <= i; j++)
- {
- if (temp < tab[j])
- {
- temp = tab[j];
- id = j;
- }
- }
- tab[id] = tab[i];
- tab[i] = temp;
- }
- else if (znak <= 0)
- for (int i = size - 1; i >= 0; i--)
- {
- int temp = tab[0];
- int id = 0;
- for (int j = 0; j <= i; j++)
- {
- if (temp > tab[i])
- {
- temp = tab[i];
- id = j;
- }
- }
- tab[id] = tab[i];
- tab[i] = temp;
- }
- }
- void receiveAllData(int size, int additional, char* buffer, int bufferSize, SOCKET s)
- {
- // zabezpieczenie przed danymi, ktore moga przyjsc w jednej paczce
- int received = additional;
- while (received < size * sizeof(int))
- {
- int res = recv(s, buffer, bufferSize, 0);
- buffer += res;
- received += res;
- bufferSize -= res;
- printf("Skladanie danych, odebrano: %d, w sumie: %d\n", res, received);
- }
- printf("\n");
- }
- int main()
- {
- setlocale(LC_ALL, "polish");
- WSADATA Data;
- WSAStartup(MAKEWORD(2, 2), &Data);
- sockaddr_in Adr;
- //Adr.sin_addr.s_addr = inet_addr("192.168.0.104");
- Adr.sin_addr.s_addr = inet_addr("127.0.0.1");
- Adr.sin_port = htons(7700);
- Adr.sin_family = AF_INET;
- SOCKET s;
- s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- int iResult;
- if (connect(s, (SOCKADDR*)&Adr, sizeof(Adr)) < 0)
- {
- cout << "Blad w polaczeniu do serwera: " << WSAGetLastError();
- _getch();
- shutdown(s, 2);
- closesocket(s);
- WSACleanup();
- return 0;
- }
- char buff[256] = { 0 };
- int len = recv(s, buff, sizeof(buff), 0);
- buff[len] = '\0';
- cout << buff << endl;
- if (buff[0] == '4')
- {
- cout << "Blad w polaczeniu do serwera: " << WSAGetLastError();
- _getch();
- shutdown(s, 2);
- closesocket(s);
- WSACleanup();
- return 0;
- }
- signed char znak;
- do
- {
- send(s, "SORT\r\n", strlen("SORT\r\n"), 0);
- /*char buff[1024];
- int res = recv(s, buff, sizeof(buff), 0);
- signed char size = buff[0];
- int zmienna = abs(size);*/
- //receiveAllData(zmienna, res-1, buff, sizeof(buff) - 1, s);
- char buff[1024];
- int res = recv(s, (char*)&znak, sizeof(znak), 0);
- signed char size = znak;
- int zmienna = abs(size);
- receiveAllData(zmienna, res, buff, sizeof(buff), s);
- printf("Liczba elementow: %d\n", size);
- if (size == 0)
- return false;
- int* liczby = (int*)buff;
- for (int i = 0; i < zmienna; i++)
- {
- printf("%d, ", liczby[i]);
- }
- printf("\nDane po sortowaniu\n");
- sortuj(liczby, zmienna, size);
- wyswietl(liczby, zmienna);
- iResult = send(s, (char*)liczby, sizeof(liczby)*zmienna, 0);
- if (iResult == SOCKET_ERROR) {
- printf("send failed: %d\n", WSAGetLastError());
- closesocket(s);
- WSACleanup();
- return 1;
- }
- _getch();
- } while (true);
- _getch();
- shutdown(s, 2);
- closesocket(s);
- WSACleanup();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement