![]() |
Connect() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Public Function |
Declared in: TCPSocket.h |
virtual BOOL Connect( int iSourcePort, LPCSTR lpDestinationAddress, int iDestinationPort);
Connect to a remote system
try { //Quit if not ok if (!CheckSocketValid()) return FALSE; if (isRaw()) { //Let's try our first attack LPTCPHeader lpHead; //Header length int iHeaderLength; iHeaderLength=TCPHeaderLength; //If we have TCP options if (m_Options) iHeaderLength+=m_TCPOptions->GetBufferLength(); //Create the header lpHead=ConstructTCPHeader(iSourcePort,iDestinationPort,iHeaderLength); //Set the flags SetHeaderFlag(lpHead,TCPFlag_ACK); //Result BOOL bResult; //Construct diffrently if we have options if (m_Options) { char* buf; buf=new char[iHeaderLength]; //Copy header memcpy(buf,lpHead,TCPHeaderLength); //Copy options memcpy(buf+TCPHeaderLength,m_TCPOptions->GetBuffer(),m_TCPOptions->GetBufferLength()); //Checksum it lpHead->Checksum=CalculatePseudoChecksum(buf,iHeaderLength,lpDestinationAddress,iHeaderLength); //Recopy header memcpy(buf,lpHead,TCPHeaderLength); //Send the data bResult=CSpoofSocket::Send(lpDestinationAddress,buf,iHeaderLength); //Dispose delete buf; } else { lpHead->Checksum=CalculatePseudoChecksum((char*)lpHead,TCPHeaderLength,lpDestinationAddress,TCPHeaderLength); //Send the data bResult=CSpoofSocket::Send(lpDestinationAddress,(char*)lpHead,TCPHeaderLength); } //Set the last error SetLastError("Connect"); //Dispose the header delete lpHead; return bResult; } else { //Set async notification int iResult; //Create the address sockaddr_in soSrc; //Set to 0 memset(&soSrc,0,sizeof(soSrc)); soSrc.sin_family=AF_INET; soSrc.sin_addr.s_addr=inet_addr(lpDestinationAddress); soSrc.sin_port=htons(iDestinationPort); iResult=connect(GetHandle(),(sockaddr*)&soSrc,sizeof(soSrc)); //Check the result if (iResult==SOCKET_ERROR) { //Check is it blocking error so we can ignore if (WSAGetLastError()!=WSAEWOULDBLOCK ) SetLastError("Connect"); else iResult=!SOCKET_ERROR; } else SetLastError("Connect"); if (iResult!=SOCKET_ERROR) //Save where we are connected m_ConnectedTo=soSrc; return iResult!=SOCKET_ERROR; } } ERROR_HANDLER_RETURN("Connect",FALSE)
![]() |
Site content copyright © 2001 Barak Weichselbaum. See the About page for additional notices. This page last updated: 24 Apr 2001. |