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
| #include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
int main(int argc, char *argv[])
{
int ftp_socket = 0, connfd = 0, read_size, i;
struct sockaddr_in serv_addr;
char client_message[2000];
char sendBuff[1025];
time_t ticks;
ftp_socket = socket(AF_INET, SOCK_STREAM, 0);
if (ftp_socket == -1)
{
printf("Could not create socket");
return 1;
}
memset(&serv_addr, '0', sizeof(serv_addr));
memset(sendBuff, '0', sizeof(sendBuff));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(5001);
if (bind(ftp_socket, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("bind failed. Error");
return 1;
}
listen(ftp_socket, 10);
int server_run = 1;
while(server_run)
{
struct sockaddr_in client_addr;
connfd = accept(ftp_socket, (struct sockaddr*)NULL, NULL);
if (connfd < 0)
{
printf("client error: %d\n", connfd);
}
else
{
sprintf(sendBuff, "220---UltraSmall FTP serveur\r\n");
write(connfd, sendBuff, strlen(sendBuff));
while((read_size = recv(connfd, client_message , 2000 , 0)) > 0 )
{
for (i = 0; i < strlen(client_message); i++)
if (client_message[i] == '\n' || client_message[i] == '\r')
client_message[i] = '\0';
printf("%s\n", client_message);
snprintf(sendBuff, sizeof(sendBuff), "OK: [%s] %.24s\r\n", client_message, ctime(&ticks));
write(connfd, sendBuff, strlen(sendBuff));
if (strcmp(client_message, "exit") == 0)
{
server_run = 0;
break;
}
}
close(connfd);
sleep(1);
}
}
} |
Partager