C-Grand debutant, cherche tutos en C
Fermé
Nostaroth
Messages postés
11
Date d'inscription
jeudi 14 juin 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
20 juil. 2007 à 15:44
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 - 21 juil. 2007 à 12:41
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 - 21 juil. 2007 à 12:41
A voir également:
- C-Grand debutant, cherche tutos en C
- Photo insta en grand - Guide
- Excel trier du plus grand au plus petit - Guide
- Logiciel de programmation pour débutant - Guide
- Ordinateur portable grand ecran - Guide
- Grand-mère en créole martiniquais - Forum Loisirs / Divertissements
2 réponses
zabbi
Messages postés
35
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
20 juil. 2007 à 23:48
20 juil. 2007 à 23:48
slt.
essaie de lire un peu sur les socket. car c'est la partie importante pour réaliser un chat
A+
essaie de lire un peu sur les socket. car c'est la partie importante pour réaliser un chat
A+
Nostaroth
Messages postés
11
Date d'inscription
jeudi 14 juin 2007
Statut
Membre
Dernière intervention
17 juillet 2010
1
21 juil. 2007 à 12:09
21 juil. 2007 à 12:09
oui, j'ai apris grand nombre de chose sur les socket, mais lorsque je fai un send(); le texte ne s'affiche pas sur le serveur
zabbi
Messages postés
35
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
21 juil. 2007 à 12:41
21 juil. 2007 à 12:41
slt .
je vais t'envoyer un programme qui marche il permet d'envoyer un message et de recevoir aussi.
c en dommaine internet mode connecté.
il ya trois fichier : tcp.h
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/param.h>
#include<string.h>
#include<sys/un.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<netdb.h>
#define PORT 2222
//12
void envoie(int,int*,char []);
struct sockaddr_in init_addr_c(void);
void reception(int,int*,char[]);
struct sockaddr_in init_addr(void);
void str_replace(char [],int);
struct sockaddr_in init_addr_c(void)
{
struct sockaddr_in addr2;
struct hostent *h;
char serveur[31];
bzero(&addr2,sizeof(addr2));
printf("L'adresse du serveur : ");
gets(serveur);
if((h=gethostbyname(serveur))==NULL)
perror("gethostbyname : ");
bcopy((char*)h->h_addr,(char*)&addr2.sin_addr,h->h_length);
//addr2.sin_family=h->h_addrtype;
addr2.sin_family=AF_INET;
addr2.sin_port=htons(PORT);
//addr2.sin_addr.s_addr=inet_addr(serveur);
return addr2;
}
struct sockaddr_in init_addr(void)
{
struct sockaddr_in addr;
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=INADDR_ANY;
return addr;
}
void reception(int acc,int* len,char msg[])
{
int nb;
nb=read(acc,len,sizeof(*len));
nb=read(acc,msg,*len);
msg[nb]='\0';
printf("lui :%s\n",msg);
printf("\n");
}
void envoie(int s,int* len,char msg[])
{
printf("Vous :");
gets(msg);
*len=strlen(msg);
write(s,len,sizeof(int));
write(s,msg,*len);
}
les deux autres fichiers : client
#include"tcp.h"
main()
{
int s,b,a,lg,acc,len,nb,len_addr;
char msg[100];
struct sockaddr_in addr2;
addr2=init_addr_c();
printf("sddd\n");
if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
perror("erreur de creation\n");
else
{
printf("socket creee\n");
if(connect(s,(struct sockaddr*)&addr2,sizeof(addr2))==-1)
perror("connect ");
else
{
printf("Connection établie\n");
while(strcmp(msg,"quit"))
{
envoie(s,&len,msg);
reception(s,&len,msg);
}
}
}
close(s);
}
le troisieme: serveur:
#include"tcp.h"
#define PORT 5222
main()
{
int s,lg,acc,len;
char msg[100];
struct sockaddr_in addr,addr2;
addr=init_addr();
if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
perror("erreur de creation\n");
else
{
lg=sizeof(struct sockaddr);
if(bind(s,(struct sockaddr*)&addr,sizeof(addr))==-1)
perror("bind :");
else
{
printf("je commence le listening\n");
if(listen(s,1)==-1)
perror("listen :");
else
{
lg=sizeof(struct sockaddr_un);
bzero(&addr2,sizeof(addr2));
if((acc=accept(s,(struct sockaddr*)&addr2,&lg))==-1)
perror("accept :");
else
{
printf("connection etablie\n");
while(strcmp(msg,"quit"))
{
reception(acc,&len,msg);
envoie(acc,&len,msg);
}
close(acc);
}
}
}
close(s);
}
}
a+;
essaie de l'executer aprés je t'envoyer la version finale avec les wizz, le choix des pseudo et tt
mais je dois le raffiner un peu.
a+
je vais t'envoyer un programme qui marche il permet d'envoyer un message et de recevoir aussi.
c en dommaine internet mode connecté.
il ya trois fichier : tcp.h
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/param.h>
#include<string.h>
#include<sys/un.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<netdb.h>
#define PORT 2222
//12
void envoie(int,int*,char []);
struct sockaddr_in init_addr_c(void);
void reception(int,int*,char[]);
struct sockaddr_in init_addr(void);
void str_replace(char [],int);
struct sockaddr_in init_addr_c(void)
{
struct sockaddr_in addr2;
struct hostent *h;
char serveur[31];
bzero(&addr2,sizeof(addr2));
printf("L'adresse du serveur : ");
gets(serveur);
if((h=gethostbyname(serveur))==NULL)
perror("gethostbyname : ");
bcopy((char*)h->h_addr,(char*)&addr2.sin_addr,h->h_length);
//addr2.sin_family=h->h_addrtype;
addr2.sin_family=AF_INET;
addr2.sin_port=htons(PORT);
//addr2.sin_addr.s_addr=inet_addr(serveur);
return addr2;
}
struct sockaddr_in init_addr(void)
{
struct sockaddr_in addr;
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=INADDR_ANY;
return addr;
}
void reception(int acc,int* len,char msg[])
{
int nb;
nb=read(acc,len,sizeof(*len));
nb=read(acc,msg,*len);
msg[nb]='\0';
printf("lui :%s\n",msg);
printf("\n");
}
void envoie(int s,int* len,char msg[])
{
printf("Vous :");
gets(msg);
*len=strlen(msg);
write(s,len,sizeof(int));
write(s,msg,*len);
}
les deux autres fichiers : client
#include"tcp.h"
main()
{
int s,b,a,lg,acc,len,nb,len_addr;
char msg[100];
struct sockaddr_in addr2;
addr2=init_addr_c();
printf("sddd\n");
if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
perror("erreur de creation\n");
else
{
printf("socket creee\n");
if(connect(s,(struct sockaddr*)&addr2,sizeof(addr2))==-1)
perror("connect ");
else
{
printf("Connection établie\n");
while(strcmp(msg,"quit"))
{
envoie(s,&len,msg);
reception(s,&len,msg);
}
}
}
close(s);
}
le troisieme: serveur:
#include"tcp.h"
#define PORT 5222
main()
{
int s,lg,acc,len;
char msg[100];
struct sockaddr_in addr,addr2;
addr=init_addr();
if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
perror("erreur de creation\n");
else
{
lg=sizeof(struct sockaddr);
if(bind(s,(struct sockaddr*)&addr,sizeof(addr))==-1)
perror("bind :");
else
{
printf("je commence le listening\n");
if(listen(s,1)==-1)
perror("listen :");
else
{
lg=sizeof(struct sockaddr_un);
bzero(&addr2,sizeof(addr2));
if((acc=accept(s,(struct sockaddr*)&addr2,&lg))==-1)
perror("accept :");
else
{
printf("connection etablie\n");
while(strcmp(msg,"quit"))
{
reception(acc,&len,msg);
envoie(acc,&len,msg);
}
close(acc);
}
}
}
close(s);
}
}
a+;
essaie de l'executer aprés je t'envoyer la version finale avec les wizz, le choix des pseudo et tt
mais je dois le raffiner un peu.
a+