Advertisement
Guest User

chyba tcp

a guest
Apr 25th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.08 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <conio.h>
  3. #include <WinSock2.h>
  4.  
  5. #pragma comment(lib,"Ws2_32.lib")
  6. #define czas 0
  7.  
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10.     WSADATA wsdata;
  11.     int w= WSAStartup(MAKEWORD(2,2),&wsdata);
  12.     if(w!=0)
  13.     {
  14.         printf("\nBlad inicjalizacji biblioteki winsock");
  15.         getch();
  16.         return 1;
  17.     }
  18.  
  19.  
  20.     SOCKET tcpp[5];   ///TABLICA SOCKETÓW
  21.     for(int i=0;i<5;i++)
  22.     tcpp[i]=socket(AF_INET,SOCK_STREAM,0);   /// DEFINICJA SOKETÓW
  23.          
  24.         if(tcpp[0]==INVALID_SOCKET)
  25.         {
  26.             printf("\nBlad socketa");
  27.             getch();
  28.             return 1;
  29.         }
  30.  
  31.  
  32.  
  33.         sockaddr_in pol,skad;
  34.         pol.sin_addr.s_addr=inet_addr("10.10.100.102");  // MY WPISUJEMYN A SZTYWNO
  35.         pol.sin_family=AF_INET;
  36.         pol.sin_port=htons(27015);
  37.  
  38.         u_long tryb=1;
  39.  
  40.         for(int i=0;i<5;i++)
  41.         ioctlsocket(tcpp[i],FIONBIO,&tryb);     //USTALAMY, ¯E GNIAZDO JEST NIEBLOKUJ¥CE
  42.      
  43.         for(int i=0;i<5;i++)
  44.             int c=connect(tcpp[i],(SOCKADDR*)&pol,sizeof(pol));  // KONEKTUJEMY WSZYSTKIE GNIAZDA
  45.         fd_set set;
  46.             int j=0;
  47.         while(true)
  48.         {
  49.             timeval timeout={czas/1000,(czas%1000)*1000};
  50.             FD_ZERO(&set);
  51.             for(int i=0;i<5;i++)
  52.                 {
  53.                 if(tcpp[i]!=0)
  54.                     FD_SET(tcpp[i],&set);      // USTALAM ZE MOZNA TAM dac selekt
  55.  
  56.  
  57.             int wynik=select(FD_SETSIZE,NULL,&set,NULL,&timeout);  // SELEKT PO WSYZSKTICH
  58.              
  59.             if(wynik>0)
  60.             {
  61.                 for(int i=0;i<5;i++)
  62.                 {
  63.                 if(FD_ISSET(tcpp[i],&set))     //ODPALAMY WLASCIWE GNIAZDO I ALGORYTMY
  64.                 {  
  65.                  
  66.                     char buf[1024]="";
  67.                     char ble[1024]="";
  68.                     printf("\nNawiazano polaczenie i mozna wysylac dane, Podaj dane:");
  69.                     gets(buf);
  70.                     int rozmiar=sizeof(buf);
  71.                     while(true)
  72.                     {
  73.                         if(send(tcpp[i],buf,strlen(buf)+1,0)==(strlen(buf)+1)) break;  //wysla do skutku calosc!
  74.                          
  75.                     }
  76.                     printf("\nWyslalem\n");
  77.                     while(true)      /// ODBIERA DO SKUTKU
  78.                     {
  79.                         if(recv(tcpp[i],ble,rozmiar,0)>0)
  80.                         {
  81.                             printf("\nOdebralem %s\n",ble);
  82.                             break;
  83.                         }
  84.                     }
  85.                     if(strcmp(ble,"=> exit")==0)
  86.                     {
  87.                         printf("\nOdebralem od serwera ""exit"" Koniec programu");
  88.                         closesocket(tcpp[i]);
  89.                         tcpp[i]=0;
  90.                         j++;
  91.                         break;
  92.                          
  93.                     }
  94.                 }
  95.             }
  96.  
  97.             }
  98.              
  99.             if(j==5) break;
  100.  
  101.         }
  102.  
  103.  
  104.     WSACleanup();
  105.     getch();
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement