хттп прокси на си

Тема в разделе "WASM.NETWORKS", создана пользователем shsh, 30 мар 2011.

  1. shsh

    shsh Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    69
    а подкиньте у кого есть сабж , максимально простой )
     
  2. C2H5OH

    C2H5OH New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2008
    Сообщения:
    42
    На pudn посмотри, там этого добра валом
     
  3. Pernat1y

    Pernat1y Member

    Публикаций:
    0
    Регистрация:
    27 янв 2008
    Сообщения:
    36
    Не? http://www.3proxy.ru/?l=RU
     
  4. shsh

    shsh Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    69
    не ) муторные очень , хочется скопипастить и ваще не вникать )
    самому написать не предлагать , хочу поддержать традицию "потратить 3 часа на поиски, а потом забить и написать самому за час )"
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Дак таким "макаром" ты же и получишь что-то типа ...
    http://www.imagepost.ru/images/826/812a8652610fa552df2d8f30038.jpg

    Оно такое надо?
     
  6. Pernat1y

    Pernat1y Member

    Публикаций:
    0
    Регистрация:
    27 янв 2008
    Сообщения:
    36
    http://www.codeguru.com/cpp/i-n/internet/http/article.php/c3383
    http://www.codeproject.com/KB/IP/howtoproxy.aspx
     
  7. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Сегодня закончил писать прокси-сервер, вроде работает(в локалке) в инете не пробовал. Одно плохо не работает Https, хотелось бы доработать:
    Код (Text):
    1. #include <winsock2.h>
    2. #include <windows.h>
    3. #include <iostream.h>
    4. #include <process.h>
    5. #include <stdio.h>
    6. #include <string.h>
    7.  
    8.  
    9.  
    10. int Recv(int unsigned clientsocket, char *recvbuf, int size, int time)
    11. {
    12.     timeval tm = {0, time};
    13.     fd_set fd;
    14.     FD_ZERO(&fd);
    15.     FD_SET(clientsocket, &fd);
    16.     int rc = select(0, &fd, NULL, NULL, &tm);
    17.     if(rc == SOCKET_ERROR)
    18.     {
    19.         GetLastError();
    20.         return -1;
    21.     }
    22.     if(rc)
    23.         return recv(clientsocket, recvbuf, size, 0);
    24. }
    25.  
    26. UINT WINAPI thread_client(LPVOID clientsocket)
    27. {
    28.     char recvbuf, totalbuf[500000], addrbuf[128];
    29.     int i = 0, y = 0, c = -1;
    30.     SOCKET sock;
    31.     struct hostent *ht;
    32.     struct sockaddr_in sin;
    33.     struct in_addr sinc;
    34.     int strl;
    35.     sock = WSASocketA(2,1,0,0,0,0);
    36.  
    37.     while(1)
    38.     {  
    39.        
    40.         ZeroMemory(totalbuf, sizeof(totalbuf));
    41.         c = Recv((SOCKET)clientsocket, totalbuf, sizeof(totalbuf), 1000000);
    42.         if(c <= 0)
    43.             break;
    44.         ZeroMemory(addrbuf, sizeof(addrbuf));
    45.         y = 0;
    46.         for(int u = 0; u < 1024; u++)
    47.         {
    48.             if(totalbuf[u] == 'H' && totalbuf[u+1] == 'o' && totalbuf[u+2] == 's')
    49.             {
    50.                 while(totalbuf[u+6] != '\r')
    51.                 {
    52.                     addrbuf[y] = totalbuf[u+6];
    53.                     ++y;
    54.                     ++u;
    55.                 }
    56.                 break;
    57.             }
    58.         }
    59.         ZeroMemory(&ht, sizeof(ht));
    60.         ht = gethostbyname(addrbuf);
    61.         i = 0;
    62.  
    63.         while (ht->h_addr_list[i] != 0)
    64.             sinc.s_addr = *(u_long *)ht->h_addr_list[i++];
    65.         ZeroMemory(&sin, sizeof(sin));
    66.         sin.sin_family = AF_INET;
    67.         sin.sin_addr.s_addr = sinc.s_addr;
    68.         sin.sin_port = htons(80);
    69.  
    70.         c = connect(sock, (struct sockaddr *)&sin, sizeof(sin));
    71.         if(c < 0)
    72.             break;
    73.         c = send(sock, totalbuf, strlen(totalbuf), 0);
    74.         ZeroMemory(totalbuf, sizeof(totalbuf));
    75.         y = 0;
    76.         while(Recv(sock, &recvbuf, sizeof(recvbuf), 1000000))
    77.         {
    78.             totalbuf[y] = recvbuf;
    79.             ++y;
    80.         }
    81.         closesocket(sock);
    82.         c = send((SOCKET)clientsocket, totalbuf, y, 0);
    83.     }
    84.     closesocket(sock);
    85.     closesocket((SOCKET)clientsocket);
    86.     return 0;
    87. }
    88.  
    89. int main(void)
    90. {
    91.     WSADATA wsd;
    92.     UINT IDThread;
    93.     SOCKET servsocket, clientsocket;
    94.     int c;
    95.     HANDLE hThread;
    96.  
    97.     WSAStartup(0x201, &wsd);
    98.     struct sockaddr_in ser, cli;
    99.  
    100.     servsocket = WSASocketA(2,1,0,0,0,0);
    101.     ser.sin_family = AF_INET;
    102.     ser.sin_addr.s_addr = INADDR_ANY;
    103.     ser.sin_port = htons(1111);
    104.     c = bind(servsocket, (struct sockaddr *)&ser, sizeof(ser));
    105.     c = listen(servsocket, 5);
    106.     int size_of_cli = sizeof(cli);
    107.     while(1)
    108.     {
    109.         clientsocket = accept(servsocket, (struct sockaddr *)&cli, &size_of_cli);
    110.         if(clientsocket > 0)
    111.         {
    112.             hThread = (HANDLE)_beginthreadex(
    113.             NULL,
    114.             0,
    115.             thread_client,
    116.             (LPVOID)clientsocket,
    117.             NULL,
    118.             &IDThread);
    119.         }
    120.         Sleep(1000);
    121.     }
    122.    
    123.     return 0;
    124. }
    MSVC++ 6.0

    P.S.
    Сервер вешается на 1111 порт.