[socket] socket operation on non socket
salut tout le monde,
voici mon code :
client:
Code:
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
| #include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#define MAX_SEND 100
int main()
{
int socket_connect, sockaddr_len;
struct sockaddr_in sockaddr_connect,merde;
char buffer[MAX_SEND];
sockaddr_connect.sin_family = AF_INET;
sockaddr_connect.sin_addr.s_addr = inet_addr("127.0.0.1");
sockaddr_connect.sin_port = htons(6668);
sockaddr_connect.sin_zero[8]=0;
if(socket_connect = socket(AF_INET, SOCK_STREAM, 0) < 0)
{
printf("Socket creation errror !\n" );
return EXIT_FAILURE;
}
printf("socket=%d\n",socket_connect);
if(connect(socket_connect, (struct sockaddr*)&sockaddr_connect, sizeof(sockaddr_connect)) < 0)
{
printf("Socket connection error !\n" );
perror("erreur");
return EXIT_FAILURE;
}
while(1)
{
printf("send>" );
scanf("%s", &buffer);
write(socket_connect, buffer, MAX_SEND);
}
close(socket_connect);
return 0;
} |
serveur:
Code:
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 105 106 107
| #include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <errno.h>
#define MAX_RECEPT 100
int main(int argc, char* argv[])
{
if(argc < 2)
{
printf("Parameters error !\n" );
return EXIT_FAILURE;
}
int socket_server, socket_client, server_len, client_len;
struct sockaddr_in sockaddr_server, sockaddr_client;
char buffer[MAX_RECEPT];
char buff[50];
time_t date;
FILE* f = fopen(argv[1], "a" );
if((socket_server = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("Socket creation error !\n" );
return EXIT_FAILURE;
}
sockaddr_server.sin_family = AF_INET;
sockaddr_server.sin_port = htons(6668);
sockaddr_server.sin_addr.s_addr = INADDR_ANY;
server_len = sizeof(sockaddr_server);
client_len = sizeof(sockaddr_client);
if(bind(socket_server, (struct sockaddr*)&sockaddr_server, server_len) < 0)
{
printf("Socket bind error !\n" );
printf("%d\n",errno);
perror("erreur :");
return EXIT_FAILURE;
}
if(listen(socket_server, 10) < 0)
{
printf("Socket listen error !\n" );
return EXIT_FAILURE;
}
printf("[~]Waiting connection... \n" );
socket_client = accept(socket_server, (struct sockaddr*)&sockaddr_client, &client_len);
printf("[~]Established connection !\n" );
time(&date);
fprintf(f, "[!]Established connection at %s\n", ctime(&date));
while(1)
{
if(read(socket_client, &buffer, MAX_RECEPT) < 0)
{
printf("Socket read error !" );
return EXIT_FAILURE;
}
printf("From client : %s\n\n", buffer);
fprintf(f, "From client : %s\n", buffer);
}
close(socket_client);
printf("Saving in %s\n", argv[1]);
return 0;
} |
le serveur se lance bel et bien, mais le client me retourne cette erreur, et connect retourne 0 (j'ai lu quelque part que ceci n'est pas un probleme du fait que c'est >0).
une idee la dessus
merci d'avance.