//-----------------------Includes #include #include #include #include #include #include #include #include #include #include //----------------------- #define MAXDATASIZE 100 //-----------------------MISC #pragma comment(lib, "wsock32") using namespace std; //----------------------- /* Open a raw socket, ready for IP header creation and broadcast addresses */ int TheRawSocket() { SOCKET s; s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); //Create a RAW socket int optval=1; setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof optval); //Set it to include the header return 0; } void WSA() { //Check WSA WSADATA wsaData; // if this doesn't work //WSAData wsaData; // then try this instead if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { fprintf(stderr, "WSAStartup failed.\n"); exit(1); } } int main() { char buf[MAXDATASIZE]; char DEST_IP[25]; int DEST_PORT; int numbytes; cout << "[Socket] IP Please: "; cin >> DEST_IP; cout << "[Socket] Port Please: "; cin >> DEST_PORT; //Always check WSA :) WSA(); //Variables int ret; //Connect==================================================================================== int sockfd; struct sockaddr_in dest_addr; // will hold the destination addr sockfd = socket(PF_INET, SOCK_STREAM, 0); // do some error checking! dest_addr.sin_family = AF_INET; // host byte order dest_addr.sin_port = htons(DEST_PORT); // short, network byte order dest_addr.sin_addr.s_addr = inet_addr(DEST_IP); memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero); ret = connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)); //Connect TheRawSocket(); //The Raw Socket if(ret == 0) { cout << "Socket: Connected :)" << endl; recv(sockfd, buf, MAXDATASIZE-1, 0); } else cout << "Socket: Connection Failer :(" << endl; if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { cout << "recv" << endl; exit(1); } buf[numbytes] = '\0'; //The Buffer Variable printf("Received: %s",buf); //Just an error check, its printing atm if(sockfd == INVALID_SOCKET) cout << "sockfd is not working..." << endl; //Connect==================================================================================== cin.get(); }