Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> прокси 
:(
    Опции темы
icepro
Дата 2.10.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



пробую компилить

Код

#include <windows.h>


// НАСТРОЙКА  ПАРАМЕТРОВ
#define IN_PORT     1111
#define OUT_IP      "192.168.0.2"
#define OUT_PORT    80
#define MAX_DATA    100
#define MAXCONN 1000
#define IDE_MSG 110
#define WM_ASYNC_CLIENTEVENT  WM_USER+1
#define WM_ASYNC_PROXYEVENT WM_USER+10

LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
void ConnectToProxy(SOCKET);


SOCKET hListenSockTCP   = INVALID_SOCKET;
SOCKADDR_IN     myaddrTCP,proxyaddrTCP;
char buf[MAX_DATA];
SOCKET sockets[MAXCONN];
HWND hwndMain;

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szCmdLine,int nCmdShow)
{
    WSADATA stWSADataTCPIP;
    if(WSAStartup(0x0101, &stWSADataTCPIP)) MessageBox(0,"WSAStartup error !","NET ERROR!!!",0); 

    ZeroMemory(sockets,sizeof(sockets));

    WNDCLASS wc;
    memset(&wc,0,sizeof(WNDCLASS));
    wc.style = CS_HREDRAW|CS_VREDRAW |CS_DBLCLKS ;
    wc.lpfnWndProc = (WNDPROC)MainWndProc;
    wc.hInstance = hInst;
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "CProxy";
    wc.lpszMenuName = NULL;
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    if (!RegisterClass(&wc)) return 0;

    hwndMain=CreateWindow("CProxy","ProxyExample", WS_MINIMIZEBOX|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME, CW_USEDEFAULT,0,CW_USEDEFAULT,0, NULL, NULL, hInst, NULL);
    ShowWindow(hwndMain,SW_SHOW);


    hListenSockTCP = socket (AF_INET,SOCK_STREAM,0);
    myaddrTCP.sin_family = AF_INET;
    myaddrTCP.sin_addr.s_addr = htonl (INADDR_ANY);
    myaddrTCP.sin_port = htons (IN_PORT);
    if(bind(hListenSockTCP,(LPSOCKADDR)&myaddrTCP, sizeof(struct sockaddr))) { MessageBox(hwndMain,"This port in use!","BIND TCP ERROR!!!",0);} 
    if (listen (hListenSockTCP, 5)) MessageBox(hwndMain,"listen error!","ERROR!!!",0);
    WSAAsyncSelect (hListenSockTCP,hwndMain,WM_ASYNC_CLIENTEVENT,FD_ACCEPT|FD_READ|FD_CLOSE);


    MSG  msg;
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;

    return 0;
}



LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    WORD WSAEvent;
    int i;
    DWORD currentsock;

    switch (msg)
    {

    case WM_COMMAND:
        break;

    case WM_DESTROY:
        PostQuitMessage(0);  // 10xu4yourtime
        break;


    case WM_ASYNC_CLIENTEVENT: // Сообщения про события сокетов, подключенных к клиенту...
        currentsock = wParam;
        WSAEvent = WSAGETSELECTEVENT (lParam);
        switch (WSAEvent)
        {
        case FD_CLOSE :
            shutdown(sockets[currentsock],1);
            closesocket(currentsock);
            return 0;

        case FD_READ:
            // ПЕРЕНАПРАВЛЕНИЕ ДАННЫХ (redirect). Берем от клиента, посылаем на сервер.
            i=recv(currentsock, buf, MAX_DATA, 0);
            send(sockets[currentsock],  buf, i, 0); // и отправляем...
            return 0;

        case FD_ACCEPT:
            ConnectToProxy(accept(hListenSockTCP,NULL,NULL));
            return 0;
        }
        break;

    case WM_ASYNC_PROXYEVENT:
        // Найдем соответствующий дескриптор.
        for (i=0;i<MAXCONN;i++)
            if (sockets[i] == wParam) { currentsock=i; break; }
            WSAEvent = WSAGETSELECTEVENT (lParam);
            switch (WSAEvent)
            {
                // Произошло подключение к удаленному хосту
            case FD_CONNECT :
                i=WSAGETSELECTERROR(lParam);
                if (i!=0)
                {
                    shutdown(currentsock,1);
                    closesocket(sockets[currentsock]);
                    sockets[currentsock]=INVALID_SOCKET;
                }
                return 0;


                // Сервер нас отрубает ...
            case FD_CLOSE :
                shutdown(currentsock,1);
                closesocket(sockets[currentsock]);    sockets[currentsock]=INVALID_SOCKET;
                return 0;

                // Перенаправление данных клиенту
            case FD_READ:
                i=recv(sockets[currentsock], buf, MAX_DATA, 0);
                send(currentsock,buf, i, 0);
                return 0;
            }
            break;
    }
    return DefWindowProc(hwnd,msg,wParam,lParam);
}







// Connect to PROXY Connect to PROXY Connect to PROXY Connect to PROXY Connect to PROXY Connect to PROXY

void ConnectToProxy(SOCKET nofsock)
{
    SOCKADDR_IN rmaddr;
    rmaddr.sin_family = AF_INET;
    rmaddr.sin_addr.s_addr = inet_addr(OUT_IP);
    rmaddr.sin_port = htons (OUT_PORT);

    sockets[nofsock] = socket (AF_INET,SOCK_STREAM,0); if(INVALID_SOCKET == sockets[nofsock]) MessageBox(0,"INVALID_SOCKET","ERROR!!!",0);

    WSAAsyncSelect (sockets[nofsock],hwndMain,WM_ASYNC_PROXYEVENT, FD_CONNECT|FD_READ|FD_CLOSE);

    connect (sockets[nofsock], (struct sockaddr *)&rmaddr,sizeof(rmaddr));

    return;  // Connect OK
}




студия 2005 выдает ошибки

Код

------ Построение начато: Проект: _proxy, Конфигурация: Debug Win32 ------
Compiling...
main.cpp
d:\projects\_proxy\_proxy\main.cpp(62) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data
d:\projects\_proxy\_proxy\main.cpp(87) : warning C4244: '=' : conversion from 'WPARAM' to 'DWORD', possible loss of data
Compiling manifest to resources...
Linking...
main.obj : error LNK2019: unresolved external symbol _WSAAsyncSelect@16 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _listen@8 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _bind@12 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _htons@4 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _htonl@4 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _socket@12 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _WSAStartup@8 referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol _accept@12 referenced in function "long __stdcall MainWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MainWndProc@@YGJPAUHWND__@@IIJ@Z)
main.obj : error LNK2019: unresolved external symbol _send@16 referenced in function "long __stdcall MainWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MainWndProc@@YGJPAUHWND__@@IIJ@Z)
main.obj : error LNK2019: unresolved external symbol _recv@16 referenced in function "long __stdcall MainWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MainWndProc@@YGJPAUHWND__@@IIJ@Z)
main.obj : error LNK2019: unresolved external symbol _closesocket@4 referenced in function "long __stdcall MainWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MainWndProc@@YGJPAUHWND__@@IIJ@Z)
main.obj : error LNK2019: unresolved external symbol _shutdown@8 referenced in function "long __stdcall MainWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MainWndProc@@YGJPAUHWND__@@IIJ@Z)
main.obj : error LNK2019: unresolved external symbol _connect@12 referenced in function "void __cdecl ConnectToProxy(unsigned int)" (?ConnectToProxy@@YAXI@Z)
main.obj : error LNK2019: unresolved external symbol _inet_addr@4 referenced in function "void __cdecl ConnectToProxy(unsigned int)" (?ConnectToProxy@@YAXI@Z)
D:\Projects\_proxy\Debug\_proxy.exe : fatal error LNK1120: 14 unresolved externals
Build log was saved at "file://d:\Projects\_proxy\_proxy\Debug\BuildLog.htm"
_proxy - 15 error(s), 2 warning(s)
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========



чего посоветуете делать?

Это сообщение отредактировал(а) icepro - 2.10.2008, 13:54
PM MAIL   Вверх
Fazil6
Дата 2.10.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



нужно линкеру в список добавить Ws2_32.lib
PM MAIL   Вверх
azesmcar
Дата 2.10.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



слинкуй с Ws2_32.lib
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.