Skip to content
Snippets Groups Projects
Commit e40c37ee authored by Kirill's avatar Kirill
Browse files

exo 9 fait

parent 84ce17eb
Branches
No related merge requests found
File added
......@@ -16,30 +16,66 @@
void cpy (int src, int dst)
{
return;
char buffer[1024];
// Read from the source descriptor
ssize_t bytesRead;
while ((bytesRead = read(src, buffer, sizeof(buffer))) > 0) {
ssize_t bytesWritten = write(dst, buffer, bytesRead);
if (bytesWritten == -1) {
perror("Error writing to destination descriptor");
exit(EXIT_FAILURE);
}
}
}
int main (int argc, char *argv [])
{
/* test arg number */
if(argc != 3){
fprintf(stderr,"argc\n");
exit(EXIT_FAILURE);
}
/* convert and check port number */
int port_number = (atoi(argv[1]));
if(port_number < 10000 || port_number > 65000){
fprintf(stderr,"port\n");
exit(EXIT_FAILURE);
}
/* open file to send */
int file;
CHECK(file = open(argv[2],O_RDONLY,0666));
/* create socket */
int new_socket = socket(AF_INET6,SOCK_STREAM,IPPROTO_TCP);
CHECK(new_socket);
/* complete struct sockaddr */
struct addrinfo hints, *res;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET6; // Use IPv4
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
/* connect to the remote peer */
int error = getaddrinfo(IP, argv[1], &hints, &res);
/* send the file content */
if (error != 0) {
fprintf(stderr,"getaddrinfo %s\n",gai_strerror(error)); // Generic error message
exit(1); // Set the exit status to 1
}
/* connect to the remote peer */
struct sockaddr_in6 server_address;
memset(&server_address, 0, sizeof(server_address));
server_address.sin6_family = AF_INET6;
server_address.sin6_port = htons(port_number);
inet_pton(AF_INET6, IP, &server_address.sin6_addr);
CHECK(connect(new_socket, (struct sockaddr *)&server_address, sizeof(server_address)));
cpy(file,new_socket);
/* close socket */
CHECK(close(new_socket));
/* close file */
CHECK(close(file));
/* free memory */
freeaddrinfo(res);
return 0;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment