HTTP代理源代码
#include 
#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