专注于深圳企业建站,深圳做网站首选建站公司收藏本站|设为首页

您现在的位置: 网站首页 > 网站专题 > 网络编程 > 详细内容

HTTP代理源代码

2010-12-16 9:28:54 来源: 云梯科技 www.wangzhan114.com [ ]

HTTP代理源代码

#include #include #define MAXBUFLEN 20480 #define HTTPADDLEN 50 #define TIMEWAIT 2000 #pragma comment(lib,"ws2_32.lib")SOCKET Global[1000]; DWORD WINAPI Proxy( ...
#include
#include
#define  MAXBUFLEN  20480
#define  HTTPADDLEN 50
#define  TIMEWAIT   2000
#pragma comment(lib,"ws2_32.lib")
SOCKET   Global[1000];

DWORD WINAPI  Proxy( LPVOID pSocket);
int   ParseHttpRequest(char * SourceBuf,int DataLen,void * ServerAddr);


int main(int argc,char * argv[])
{
    SOCKET  MainSocket,ClientSocket;
    struct  sockaddr_in Host,Client;
    WSADATA WsaData;
    int  AddLen,i;

           //初始化
  
    if(WSAStartup(MAKEWORD(2,2),&WsaData) < 0)
    {
         printf("初始化失败\n");
         return 1;
    }
            //创建socket端口
    MainSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(MainSocket == SOCKET_ERROR)
    {
         printf("端口创建错误\n");
     return 1;
    }
    Host.sin_family = AF_INET;
    Host.sin_port = htons(8080);
    Host.sin_addr.s_addr = inet_addr("127.0.0.1");
    printf("正在工作\n");
             //绑定socket
    if(bind(MainSocket,(SOCKADDR *)&Host,sizeof(Host)) != 0)
    {
         printf("绑定错误\n");
    }
    i = 0;
             //监听
    if(listen(MainSocket,5) == SOCKET_ERROR)
    {
         printf("监听错误\n");
    }
    AddLen = sizeof(Client);

           //连接新的客户
    i = 0;
    for(;;)
    {
         ClientSocket = accept(MainSocket,(SOCKADDR *)&Client,&AddLen);
         if(ClientSocket == SOCKET_ERROR)
         {
             printf("接受客户请求错误!\n");
         }
         printf(".");
         i ++ ;
         if( i >= 1000)
            i = 0;
         Global[i] = ClientSocket;

             //对于每一个客户启动不同的线程程进行控制
            //这个地方在使用ClientSocket的时候,要不要保证在某一时刻内只能有一个进程使用?   &nb