Я пытаюсь подключиться к почтовому серверу через прокси при помощи сокетов. В результате мне recv() из этого кода возвращает HTTP/1.0 403 Forbidden. Кто знает в чем дело? Подскажите? Через броузер я проверял- этот прокси работает.
Код | SOCKET m_hSocket; if((m_hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))== INVALID_SOCKET ) AfxMessageBox("Socket Error");
int nPort=80; char pszHostAddress[30]="208.78.125.18";
SOCKADDR_IN sockAddr; ZeroMemory(&sockAddr, sizeof(sockAddr)); sockAddr.sin_family = AF_INET; sockAddr.sin_port = htons((u_short)nPort); sockAddr.sin_addr.s_addr = inet_addr(pszHostAddress);
if (sockAddr.sin_addr.s_addr == INADDR_NONE) { LPHOSTENT lphost; lphost = gethostbyname(pszHostAddress); struct sockaddr_in adr; memcpy(&adr.sin_addr,lphost->h_addr_list[0],lphost->h_length);
sockAddr.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr; }
int tmo = 3000; setsockopt(m_hSocket,SOL_SOCKET,SO_RCVTIMEO,(const char*)tmo,sizeof(tmo));
if(connect(m_hSocket, (PSOCKADDR)&sockAddr, sizeof(sockAddr))== INVALID_SOCKET ) AfxMessageBox("Connect Error");
char sBuf[256]; int nCmdLength; / sprintf(sBuf, "CONNECT 195.214.192.101:110 HEAD \/ HTTP\/1.1\r\n Host: e.ukr.net\r\n\r\n"); nCmdLength = strlen(sBuf);
if(send(m_hSocket, sBuf, nCmdLength, 0)== SOCKET_ERROR ) AfxMessageBox("Send CONNECT Error!");
char pszBuf[256]; int nBuf=sizeof(pszBuf);
int nData=recv(m_hSocket, pszBuf, nBuf, 0); if(nData==0 || nData == SOCKET_ERROR) { AfxMessageBox("Connect Recv Error"); } else { pszBuf[nData]=0; pDlg->m_info.AddString(pszBuf); }
closesocket(m_hSocket);
|
|