求代理服务器客户端的源代码..解决了开贴再加分..急啊 RT...代理服务器客户端的源代码..就像QQ游戏那样..高级设置里有个设置代理服务器的功能..网上搜索都是服务器端的..我郁闷..问题解决了开贴再加分..大家帮帮忙... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 switch(m_LogType) { case 0://no proxy { dlg->proxy_link = false; dlg->m_serveraddr.sin_port = htons(6000); dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP); //////////////// if(dlg->linkserver != 1) { if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR) { dlg->setLight(2); /* CString er; er.Format("link server error! the error code is %d", WSAGetLastError()); dlg->m_Received += er; dlg->m_Received += "\r\n"; ::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0); */ closesocket(dlg->m_serverSocket); AfxMessageBox("连接服务器失败!"); dlg->linkserver=9; // exit(0); } else {// dlg->linkserver=1; WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE); CString t = dlg->getTime(); dlg->sendbuf.Format("%-4.4s%-4.4s%-14.14s%-15.15s%-15.15s%-10.10s", "0062","1110",t,m_User,m_Password,""); } dlg->Send(); } } break; case 2://http proxy { dlg->m_serveraddr.sin_port = htons(m_ProxyPort); dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(m_ProxyIP); if(dlg->linkserver != 1) { if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR) { dlg->setLight(2); /* CString er; er.Format("link server error! the error code is %d", WSAGetLastError()); dlg->m_Received += er; dlg->m_Received += "\r\n"; ::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0); */ closesocket(dlg->m_serverSocket); AfxMessageBox("连接代理失败!"); dlg->linkserver=9; // exit(0); } else { // dlg->linkserver=1; WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE); char buff[600]={0}; if(m_ProxyUser == "") { sprintf(buff, "%s%s:%d%s","CONNECT ",sIP,6000," HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n"); int ret=send(dlg->m_serverSocket,buff,strlen(buff),0); if(ret==SOCKET_ERROR) { CString er; er.Format("连接服务器失败! %d", WSAGetLastError()); AfxMessageBox(er); // closesocket(m_serverSocket); return; } } else { char in[200]={0}; sprintf(in,"%s:%s",m_ProxyUser,m_ProxyPin); char out[200]={0}; dlg->typeConvert.base64_Encode(in,out ,strlen(in),200); CString m_N_P(out); m_N_P.TrimRight(); sprintf(buff,"CONNECT %s:%d HTTP/1.0\r\nProxy-Authorization: Basic %s\r\n\r\n",sIP,6000,m_N_P); int ret=send(dlg->m_serverSocket,buff,strlen(buff),0); if(ret==SOCKET_ERROR) { CString er; er.Format("连接服务器失败! %d", WSAGetLastError()); AfxMessageBox(er); // closesocket(m_serverSocket); return; } } dlg->proxy_link_step =5; } } } break; case 1://socks5 proxy { dlg->m_serveraddr.sin_port = htons(m_ProxyPort); dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(m_ProxyIP); if(dlg->linkserver != 1) { if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR) { dlg->setLight(2); /* CString er; er.Format("link server error! the error code is %d", WSAGetLastError()); dlg->m_Received += er; dlg->m_Received += "\r\n"; ::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0); */ closesocket(dlg->m_serverSocket); AfxMessageBox("连接代理失败!"); dlg->linkserver=9; // exit(0); } else {// dlg->linkserver=1; WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE); char buffer[10]={0}; sock5req1 *m_ClientReq1; m_ClientReq1=(sock5req1*)buffer; m_ClientReq1->Ver=0x05; m_ClientReq1->nMethods=02; m_ClientReq1->Methods[0]=0x00; m_ClientReq1->Methods[1]=0x02; int ret=send(dlg->m_serverSocket,buffer,4,0); if(ret==SOCKET_ERROR) { CString er; er.Format(" error code is %d", WSAGetLastError()); AfxMessageBox(er); closesocket(dlg->m_serverSocket); return; } } } } break; } 关于多项式拟合?怎么做? 关于选入了位图的兼容DC 急~~~ 又见黄花开 关于窗口大小的定制 如何修改mylist的节点??? 高分求书: <网络连接服务开发人员参考库 第4卷 远程访问服务>电子版本 CListCtrl如何在程序一运行的时候就默认选择一行 一次性读完文件,数组应该设多大?我的代码是.. 如何进入windows编程?谢 怎么在对话框上添加菜单?请多多指教。谢谢!!! 紧急,vc6,对话框程序,如何在程序一开始的运行的时候,隐藏掉主窗口? 紧急::用socket怎么从windows客户端往linux服务器端传输打文件?
{
case 0://no proxy
{
dlg->proxy_link = false;
dlg->m_serveraddr.sin_port = htons(6000);
dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);
////////////////
if(dlg->linkserver != 1)
{
if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR)
{
dlg->setLight(2);
/*
CString er;
er.Format("link server error! the error code is %d", WSAGetLastError());
dlg->m_Received += er;
dlg->m_Received += "\r\n";
::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0);
*/
closesocket(dlg->m_serverSocket);
AfxMessageBox("连接服务器失败!");
dlg->linkserver=9;
// exit(0);
}
else
{
// dlg->linkserver=1;
WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE);
CString t = dlg->getTime();
dlg->sendbuf.Format("%-4.4s%-4.4s%-14.14s%-15.15s%-15.15s%-10.10s",
"0062","1110",t,m_User,m_Password,"");
}
dlg->Send();
}
}
break;
case 2://http proxy
{
dlg->m_serveraddr.sin_port = htons(m_ProxyPort);
dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(m_ProxyIP);
if(dlg->linkserver != 1)
{
if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR)
{
dlg->setLight(2);
/*
CString er;
er.Format("link server error! the error code is %d", WSAGetLastError());
dlg->m_Received += er;
dlg->m_Received += "\r\n";
::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0);
*/
closesocket(dlg->m_serverSocket);
AfxMessageBox("连接代理失败!");
dlg->linkserver=9;
// exit(0);
}
else
{
// dlg->linkserver=1;
WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE);
char buff[600]={0};
if(m_ProxyUser == "")
{
sprintf(buff, "%s%s:%d%s","CONNECT ",sIP,6000," HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n");
int ret=send(dlg->m_serverSocket,buff,strlen(buff),0);
if(ret==SOCKET_ERROR)
{
CString er;
er.Format("连接服务器失败! %d", WSAGetLastError());
AfxMessageBox(er);
// closesocket(m_serverSocket);
return;
}
}
else
{
char in[200]={0};
sprintf(in,"%s:%s",m_ProxyUser,m_ProxyPin);
char out[200]={0};
dlg->typeConvert.base64_Encode(in,out ,strlen(in),200);
CString m_N_P(out);
m_N_P.TrimRight(); sprintf(buff,"CONNECT %s:%d HTTP/1.0\r\nProxy-Authorization: Basic %s\r\n\r\n",sIP,6000,m_N_P);
int ret=send(dlg->m_serverSocket,buff,strlen(buff),0);
if(ret==SOCKET_ERROR)
{
CString er;
er.Format("连接服务器失败! %d", WSAGetLastError());
AfxMessageBox(er);
// closesocket(m_serverSocket);
return;
}
}
dlg->proxy_link_step =5;
}
}
}
break;
case 1://socks5 proxy
{
dlg->m_serveraddr.sin_port = htons(m_ProxyPort);
dlg->m_serveraddr.sin_addr.S_un.S_addr = inet_addr(m_ProxyIP);
if(dlg->linkserver != 1)
{
if(connect(dlg->m_serverSocket,(const sockaddr*)&dlg->m_serveraddr,sizeof(dlg->m_serveraddr)) == SOCKET_ERROR)
{
dlg->setLight(2);
/*
CString er;
er.Format("link server error! the error code is %d", WSAGetLastError());
dlg->m_Received += er;
dlg->m_Received += "\r\n";
::PostMessage(AfxGetMainWnd()->m_hWnd, UPDATEDATA, 0, 0);
*/
closesocket(dlg->m_serverSocket);
AfxMessageBox("连接代理失败!");
dlg->linkserver=9;
// exit(0);
}
else
{
// dlg->linkserver=1;
WSAAsyncSelect(dlg->m_serverSocket, AfxGetMainWnd()->m_hWnd, CLIENT_TCP_EVENT, FD_READ | FD_CLOSE); char buffer[10]={0};
sock5req1 *m_ClientReq1;
m_ClientReq1=(sock5req1*)buffer;
m_ClientReq1->Ver=0x05;
m_ClientReq1->nMethods=02;
m_ClientReq1->Methods[0]=0x00;
m_ClientReq1->Methods[1]=0x02;
int ret=send(dlg->m_serverSocket,buffer,4,0);
if(ret==SOCKET_ERROR)
{
CString er;
er.Format(" error code is %d", WSAGetLastError());
AfxMessageBox(er);
closesocket(dlg->m_serverSocket);
return;
} }
} }
break;
}