C-Grand debutant, cherche tutos en C
Nostaroth
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
zabbi Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
zabbi Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Voila j'aimerai pouvoir fair un tchat, je suis grand debutant en C j'ai fini d'aprendre tout ce qu'il y a sur le site du zero (sauf la partie C++) et je voudrai trouver un tuto pour m'aider a fair ce que je cherche, merci d'avance.
Et si vous avez quelque bon tuto pour que j'aprofondisse mes connaissance c'est pas mal aussi
=D
Et si vous avez quelque bon tuto pour que j'aprofondisse mes connaissance c'est pas mal aussi
=D
A voir également:
- C-Grand debutant, cherche tutos en C
- Photo insta en grand - Guide
- Logiciel de programmation pour débutant - Guide
- Trier du plus petit au plus grand excel - Guide
- Logiciel montage vidéo débutant - Guide
- Ordinateur portable grand ecran - Guide
2 réponses
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
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+