Ben voilà j'ai mon code source serveur :
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define PORT 12345
char msg[]=
"\t\t\tReponse\n"
#define YES 1
#define NO 0
int main(int argc, char *argv[])
{
int sockfd, newfd, size;
struct sockaddr_in local;
struct sockaddr_in remote;
bzero(&local, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
local.sin_addr.s_addr = INADDR_ANY;
bzero(&(local.sin_zero), 8);
if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(1);
}
if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
if(listen(sockfd, 5) == -1)
{
perror("listen");
exit(1);
}
size = sizeof(struct sockaddr_in);
while(1)
{
if((newfd=accept(sockfd, (struct sockaddr *)&remote, &size)) == -1)
{
perror("accept");
exit(1);
}
if (!fork())
{
send(newfd,msg,sizeof(msg), 0);
close(0);
close(newfd);
}
}
return(0);
}
Et mon code source client :
#include <stdio.h>
#include <netdb.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<strings.h>
#define _SERV "127.0.0.1" //l'IP du serveur, par forcément 127.0.0.1
#define _PORT 12345
int main(int argc, char *argv[])
{
int port,s;
struct sockaddr_in serv_addr;
struct hostent *server;
port = _PORT;
server = gethostbyname(_SERV);
if (!server)
{
fprintf(stderr, "Impossible de résoudre \"%s\"", _SERV);
return 1;
}
s = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(port);
if (connect(s, &serv_addr, sizeof(serv_addr)) < 0)
{
perror("Impossible de se connecter à l'adresse");
return 1;
}
return 0;
}
PB : ça plante toujours au connect, ça me dit Connection refused :(
D'où ça vient ??