1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| //
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
//
host = gethostbyname(hostname);
if (host == NULL) {
sprintf_s(wbuf, sizeof(wbuf), "La resolution a échouée : %d\n", WSAGetLastError());
MessageBox(hwnd, wbuf, "Client HelpDesk", MB_OK|MB_ICONINFORMATION);
return 0;
}
//
ListenSocket = socket(AF_INET, SOCK_STREAM, 0);
memset((char *)&service,'0',sizeof(service));
// service.sin_addr.s_addr = inet_addr("192.168.10.2");
service.sin_addr.s_addr = *(u_long *) host->h_addr_list[0];
service.sin_family = AF_INET;
service.sin_port = htons(DEFAULT_PORT);
//
if (iResult=connect(ListenSocket, (SOCKADDR *)&service, sizeof(service)) == S_OK) {
recv(ListenSocket, buffer_io, sizeof(buffer_io), 0);
MessageBox(hwnd, buffer_io, "Reponse connect", MB_OK|MB_ICONINFORMATION);
//
strcpy_s(wbufP, sizeof(wbufP), "USER xxxxxxx\r\n");
send(ListenSocket, wbufP, strlen(wbufP), 0);
memset (buffer_io, '\x00', sizeof(buffer_io));
recv(ListenSocket, buffer_io, sizeof(buffer_io), 0);
MessageBox(hwnd, buffer_io, "Reponse USER", MB_OK|MB_ICONINFORMATION);
//
strcpy_s(wbufP, sizeof(wbufP), "PASS xxxxxxxxxxx\r\n");
send(ListenSocket, wbufP, strlen(wbufP), 0);
//
memset (buffer_io, '\x00', sizeof(buffer_io));
recv(ListenSocket, buffer_io, sizeof(buffer_io), 0);
MessageBox(hwnd, buffer_io, "Reponse PASS", MB_OK|MB_ICONINFORMATION);
//
//
strcpy_s(wbufP, sizeof(wbufP), "PASV\r\n");
send(ListenSocket, wbufP, strlen(wbufP), 0);
//
memset (buffer_io, '\x00', sizeof(buffer_io));
recv(ListenSocket, buffer_io, sizeof(buffer_io), 0);
MessageBox(hwnd, buffer_io, "Reponse PASV", MB_OK|MB_ICONINFORMATION); //227
//
portdata=RecupPort(hwnd, buffer_io);
_itoa_s (portdata, wbuf, sizeof(wbuf), 10);
MessageBox(hwnd, wbuf, "Port PASV", MB_OK|MB_ICONINFORMATION);
//
//
memset(&localaddr,0,sizeof(localaddr));
memset(&remoteaddr,0,sizeof(remoteaddr));
//
s = socket(AF_INET, SOCK_STREAM, 0);
localaddr.sin_family = AF_INET;
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
for( i = min_port; i <= max_port; i++){
localaddr.sin_port = htons(i);
if(0 <= bind(s,(struct sockaddr *)(&localaddr),sizeof(struct sockaddr)))
break;
}
//
strcpy_s(wbufP, sizeof(wbufP), "RETR exemple.txt\r\n");
send(ListenSocket, wbufP, strlen(wbufP), 0);
//
listen(s,5);
remoteaddr.sin_family = AF_INET;
remoteaddr.sin_port = htons(portdata);
remoteaddr.sin_addr.s_addr = inet_addr("192.168.10.3");
len = sizeof(remoteaddr);
nc = accept(s,(struct sockaddr *)(&remoteaddr), &len);
if (nc <0 ) {
sprintf_s(wbuf, sizeof(wbuf), "accept failed! %d \n", WSAGetLastError());
MessageBox(hwnd, wbuf, "FTP Client", MB_OK|MB_ICONINFORMATION);
exit(0);
}
sprintf_s(recvbuf, sizeof(recvbuf), "accepted a connection from IP %s port %d \n",inet_ntoa(remoteaddr.sin_addr),ntohs(remoteaddr.sin_port));
MessageBox(hwnd, recvbuf, "FTP Client", MB_OK|MB_ICONINFORMATION);
//PORT
//
while(1) {
i=recv(nc, recvbuf, sizeof(recvbuf), 0);
if (i<0) break;
MessageBox(hwnd, recvbuf, "Reponse data de RETR", MB_OK|MB_ICONINFORMATION);
}
closesocket(nc);
//
memset (buffer_io, '\x00', sizeof(buffer_io));
recv(ListenSocket, buffer_io, sizeof(buffer_io), 0);
MessageBox(hwnd, buffer_io, "Reponse RETR", MB_OK|MB_ICONINFORMATION);
//
//226 Transfer complete.
//Fermeture socket data
//
}
else {
sprintf_s(wbuf, sizeof(wbuf), "La connexion au serveur a échouée : %d\n", WSAGetLastError());
MessageBox(hwnd, wbuf, "Client HelpDesk", MB_OK|MB_ICONINFORMATION);
closesocket(ListenSocket);
WSACleanup();
ListenSocket = INVALID_SOCKET; //Uniquement pour l'affichage WM_PAINT
status_c=0;
InvalidateRect (hwnd, &rect, TRUE);
} |
Partager