Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <winsock.h>
- #include <string.h>
- #include <conio.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #pragma comment(lib, "wsock32.lib")
- //FUNKCJA DO SELECT//
- int Sprawdz(SOCKET _gniazdo)
- {
- timeval timer = { 0,10000 };
- fd_set set;
- FD_ZERO(&set);
- FD_SET(_gniazdo, &set);
- int wynik = select(FD_SETSIZE, &set, NULL, NULL, &timer);
- return wynik;
- }
- int main()
- {
- //Inicjalizacja serwera
- WSADATA wsDate;
- if (WSAStartup(MAKEWORD(2, 2), &wsDate) != 0)
- {
- printf("Init Error\n");
- WSACleanup();
- _getch();
- return 1;
- }
- printf("Init\tOK\n");
- //Tworzenie gniazda
- SOCKET gniazdo, gniazdoA;
- if ((gniazdo = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
- {
- printf("Blad: ", WSAGetLastError());
- shutdown(gniazdo, 2);
- closesocket(gniazdo);
- WSACleanup();
- _getch();
- return 1;
- }
- printf("Socket\tOK\n");
- //Struktura adresowa
- sockaddr_in server,serverD;
- server.sin_family = AF_INET;
- server.sin_port = htons(21040);
- server.sin_addr.s_addr = INADDR_ANY;
- //Bindowanie gniazda
- if (bind(gniazdo, (SOCKADDR*)&server, sizeof(server)) == SOCKET_ERROR)
- {
- printf("Blad: ", WSAGetLastError());
- shutdown(gniazdo, 2);
- closesocket(gniazdo);
- WSACleanup();
- _getch();
- return 1;
- }
- printf("Bind\tOK\n");
- //Ustawienie żądania nasłuchiwania
- if ((listen(gniazdo, 2)) == SOCKET_ERROR)
- {
- printf("Blad: ", WSAGetLastError());
- shutdown(gniazdo, 2);
- closesocket(gniazdo);
- WSACleanup();
- _getch();
- return 1;
- }
- printf("Listen\tOK\n");
- //Rozpoczęcie pętli odbierająco-nadającej
- while (true)
- {
- if (Sprawdz(gniazdo) > 0)
- {
- int rozmiar = sizeof(serverD);
- gniazdoA = accept(gniazdo, (SOCKADDR*)&server, &rozmiar);
- if (gniazdoA < 0)
- {
- printf("Blad: ", WSAGetLastError());
- shutdown(gniazdo, 2);
- closesocket(gniazdo);
- WSACleanup();
- _getch();
- return 1;
- }
- char buffor[512];
- memset(buffor, 0, sizeof(buffor));
- char znak[1];
- int indeks = rand() % 2;
- if (indeks == 0) strcpy(znak, "R");
- if (indeks == 1) strcpy(znak, "M");
- memcpy(buffor, znak, sizeof(znak));
- int ilosc = rand() % 10 + 1;
- memset(buffor + 1, ilosc, sizeof(ilosc));
- int *tablica = new int[ilosc];
- for (int i = 0; i < ilosc; i++)
- {
- tablica[i] = rand() % 100;
- memset(buffor + (4+(4 * i)), tablica[i], sizeof(int));
- }
- delete(tablica);
- send(gniazdoA, buffor, 512, 0);
- printf("Wyslalem\n");
- }
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement