Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // serwer.cpp: definiuje punkt wejścia dla aplikacji konsolowej.
- //
- #include "stdafx.h"
- #define _WINSOCK_DEPRECATED_NO_WARNINGS
- #pragma comment(lib, "ws2_32.lib")
- #include <WinSock2.h>
- #include <iostream>
- int main()
- {
- //Winsock Startup
- WSAData wsaData;
- WORD DllVersion = MAKEWORD(2, 1);
- if (WSAStartup(DllVersion, &wsaData) != 0) { //Jezeli WSAStartup zwroci cokolwiek innego od 0 to wystapil blad w startupie
- MessageBoxA(NULL, "Winsock startup failed", "Error", MB_OK | MB_ICONERROR);
- exit(1);
- }
- SOCKADDR_IN addr; //Adres z ktorym zwiazemy nasluchujacy socket
- int addrlen = sizeof(addr); //dlugosc adresu (wymagana do accept call)
- addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //Broadcast lokalny
- addr.sin_port = htons(1111); //Port na ktorym serwer nasluchuje
- addr.sin_family = AF_INET; //IPv4 Socket
- SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL); //Tworzenie socketa do nasluchiwania nowego polacenia
- bind(sListen, (SOCKADDR*)&addr, sizeof(addr)); //Zwiaz adres z socketem
- listen(sListen, SOMAXCONN); //Zmienia stan socketu sListen na nasluchiwanie nadchodzacego polaczenia
- SOCKET newConnection; //Socket do trzymania polaczenia klienta
- newConnection = accept(sListen, (SOCKADDR*)&addr, &addrlen); //Zaakceptuj nowe polaczenie
- if (newConnection == 0) { //Jezeli akceptowanie polaczenia klienta nie powiodlo sie
- std::cout << "Nie udalo sie akceptowac polaczenia klienta." << std::endl;
- }
- else { //Jezeli polaczenie klienta zostalo poprawnie zaakceptowane
- std::cout << "Polaczono z klientem" << std::endl;
- while (1) {
- char msg[256] = "Podaj wartosc L (0, aby zakonczyc): "; //Utworzenie buforu z wiadomoscia
- int L;
- send(newConnection, msg, sizeof(msg), NULL); //Wysylanie buforu msg
- recv(newConnection, (char*)&L, sizeof(L), NULL);
- if (L == 0){
- std::cout << "Klient rozlaczyl sie\n";
- shutdown(newConnection, 2);
- break;
- }
- else {
- std::cout << "Odebrano wartosc: " << L << std::endl;
- double L_pow = L * L;
- send(newConnection, (char*)&L_pow, sizeof(L_pow), NULL);
- }
- }
- }
- //WSACleanup();
- //closesocket(newConnection);
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement