Hey all, I have a little question.
I'm making a ftp program trough winsock.
It connects fine etc... but it wont login correctly to the ftp.
Sometimes when it sends the "USER <username>" to the ftp, the ftp says the username is ok and asks for a password.
But most of the time, the ftp doesnt respond to what I send to it.
And when it says the username is ok and I send the password "PASS <password" it wont respond too
Smth is wrong in the section of the code that is red.
I dont have a clue what's wrong. Could anybody help me?
Thanks, Niek
Code:#include <winsock2.h> #include <iostream.h> #include <string.h> int main() { WSADATA wsaData; WORD wVersionRequested; struct hostent *pTarget; struct sockaddr_in sock; char host[16]; char* target; int port; const int RECVBUF = 1024; char buf[RECVBUF]; char buffer[RECVBUF]; char user[50]; char pass[50]; SOCKET mysocket; cout << "Give here the IP address: " << endl; cin >> host; target = host; cout << "Give here the port:" << endl; cin >> port; cout << "Give here the username:" << endl; cin >> user; cout << "Give here the password:" << endl; cin >> pass; //Making a connection... wVersionRequested = MAKEWORD(1, 1); if (WSAStartup(wVersionRequested, &wsaData) < 0) return -1; mysocket = socket(AF_INET, SOCK_STREAM, 0); if(mysocket==INVALID_SOCKET) { cout << "Socket error!\r" << endl; exit(1); } cout << "Resolving Hostnames..." << endl; if ((pTarget = gethostbyname(target)) == NULL) { cout << "Resolve of " << host << " failed" << endl; exit(1); } memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length); sock.sin_family = AF_INET; sock.sin_port = htons((USHORT)port); cout << "Connecting..." << endl; if ( (connect(mysocket, (struct sockaddr *)&sock, sizeof (sock) ))) { cout << "Couldn't connect to host." << endl; exit(1); } cout << "Connected" << endl; recv(mysocket, buf, sizeof(buf), 0); //winsock ready etc... //logging in... cout << "Logging in..." << endl; char* tempp = "USER "; char users[55]; strcpy(users, tempp); strcat(users, user); char* userss = users; send(mysocket, userss, sizeof(buffer), 0); recv(mysocket, buf, sizeof(buf), 0); if(buf != 0) { goto pass; } else { cout << "Server not responding, press enter to exit" << endl; cin.get(); closesocket(mysocket); WSACleanup(); exit(1); } pass: char password[55]; char* temp = "PASS "; strcpy(password, temp); strcat(password, pass); char* passwordd = password; send(mysocket, passwordd, sizeof(buffer), 0); recv(mysocket, buf, sizeof(buf), 0); recv(mysocket, buf, sizeof(buf), 0); if(strcmp(buf, "230 User logged in, proceed.")== 0) { cout << "Password is correct, succesfully logged in" << endl; goto end; } else { cout << "The password is invalid, press enter to exit" << endl; cin.get(); closesocket(mysocket); WSACleanup(); exit(1); } end: closesocket(mysocket); WSACleanup(); return 0; }



LinkBack URL
About LinkBacks



