Kategoria: C++

Programy Sieciowy- przystępna teoria C++ // Tworzenie procesów potomnych dla Klienta (podłączanie wielu klientów do jednego serwera) // Telepraca // Strona białego domu zrobiona na drupalu // Opis bibliotek w C++ // Biblioteki programistyczne do pobrania

Przebieg połączenia TCP serwer-klient

Kod serwera i klienta:

#include <iostream.h>
#include <winsock2.h>

const unsigned int maxchars = 200; //maximum number of chars for the buffer (i/o)

//The client
void Client()
{
   char dest_ip[15]; //destination IP
   cout << „Destination IP: „;
   cin >> dest_ip;
   cout << endl;

   SOCKET go; //create the sending socket structure

   if(go = socket(AF_INET,SOCK_STREAM,0))
      cout << „— Sending socket created successfully!n”;
   else
   {
      cout << „Can’t create sending socket! Aborting!n”;
      WSACleanup();
      exit(0);
   }

   sockaddr_in target;

   target.sin_family = AF_INET;
   target.sin_port = htons(7979); //sending port
   target.sin_addr.s_addr = inet_addr(dest_ip);

   if(connect(go,(LPSOCKADDR)&target,sizeof(target)) == SOCKET_ERROR)
   {
      cout << „Can’t connect! Aborting!n”;
      WSACleanup();
      exit(0);
   }
   else
   {
      cout << „— Connected successfully!nn”;
      cout << „-| Enter 000 when you want to end the session!nn”;
         

      char buff[maxchars];

      while(buff[0] != '0′ || buff[1] != '0′ || buff[2] != '0′)
      {
         cin.getline(buff,maxchars);      
         cout << „Enter data: „;
         
         

         if(buff[0] != '0′ || buff[1] != '0′ || buff[2] != '0′)
            send(go,buff,sizeof(buff),0);
         else
         {
            send(go,buff,sizeof(buff),0);
            closesocket(go);
            cout << „-> Session closed!n”;
            WSACleanup();
            exit(0);
         }
      }

   }
}

void Server()
{
   SOCKET come;

   if(come = socket(AF_INET,SOCK_STREAM,0))
      cout << „— Receiving socket created successfully!n”;
   else
   {
      cout << „Can’t create receiving socket! Aborting!n”;
      WSACleanup();
      exit(0);
   }

   sockaddr_in addr; //the address structure for a TCP socket

   addr.sin_family = AF_INET; //Address family internet
   addr.sin_port = htons(7979); //Receiving port
   addr.sin_addr.s_addr = htonl(INADDR_ANY);

   if(bind(come,(LPSOCKADDR)&addr,sizeof(addr)) == SOCKET_ERROR)
   { //error
      cout << „Error binding! Aborting!n”;
      WSACleanup(); //unload WinSock
      exit(0); //quit
   }

   if(listen(come,1) == SOCKET_ERROR)
   { //error. unable to listen
      cout << „Error listening! Aborting!n”;
      closesocket(come);
      WSACleanup();
      exit(0);
   }
   else
   {
      SOCKET client; //socket handles to clients

      client = accept(come,NULL,NULL);
      
      if(client == INVALID_SOCKET)
      { //error accepting the connection
         cout << „Can’t accept connection! Aborting!n”;
         closesocket(come);
         WSACleanup();
         exit(0);
      }
      else
      {
         cout << endl;
         char buffer[maxchars]; //buffer for incomming messages

         while(buffer[0] != '0′ || buffer[1] != '0′ || buffer[2] != '0′)
         {
            buffer[0] = 0;
            buffer[1] = 0;
            buffer[2] = 0;

            recv(client,buffer,sizeof(buffer),0);

            if(buffer[0] != '0′ || buffer[1] != '0′ || buffer[2] != '0′)
            {
               if(strlen(buffer) > 0)
                  cout << „Received: ” << buffer << endl;
            }
            else
            {
               closesocket(come);
               cout << „-> Session closed!n” << endl;
               WSACleanup();
               exit(0);
            }
            

         }

      }
   }

}

void main()
{
   
   WSADATA w;

   if(WSAStartup(0x0202,&w))
   {
      cout << „Can’t initialize WinSock. Aborting!n”;
      exit(0);
   }
   else
      cout << „— WinSock initialized successfully!n”;

   if(w.wVersion != 0x0202)
   { //wrong version
      cout << „Wrong version.Aborting!n”;
      WSACleanup(); //Unload ws2_32.dll
      exit(0);
   }
   else
      cout << „— Version 2.2 accepted!n”;

   char o;
   cout << endl;
   while(o != '1′ && o!= '2′ && o != '3′)
   {
      cout << „1 – Run Servern”;
      cout << „2 – Run Clientn”;
      cout << „3 – Exitn”;
      cout << „Enter 1,2 or 3: „;
      cin >> o;
   }

   switch(o)
   {
   case '1′:
      Server();
      break;
   case '2′:
      Client();
      break;
   case '3′:
      exit(0);
      break;
   };
}

//

Python i C++

Python jest interpreterem
C++ to język kompilowany

+

Python jest interpretowanym, interaktywnym językiem programowaniastworzonym przez Guino van Rossuma w 1990,obecnie rozwijanym przez Python Software Fundation. Językten wspiera programowanie obiektowe, strukturalnei funkcyjne. Ze względu na bogatą bibliotekę standardową,prostotę, przejrzystość kodu źródłowego (np. bloki są zaznaczaneprzez wcięcia), przenośność, brak statycznej kontrolitypów, możliwość umieszczania dokumentacji w kodzieźródłowym staje się on coraz bardziej popularny – działającą aplikację można utworzyć w bardzo krótkim czasie.Język Python został ciekawie opisany w książce