voici la version dun client et dun serveur que je fais pour un jeu mais les donnes son envoyer en continu jaimerais aire en sorte que si je tape un caractere jenvoi et si je necris rien jattend help
merci davance
Voici le serveur
#include <stdio.h>
#include <winsock2.h>
#include <iostream.h>
#include <conio.h>
#pragma comment(lib,"ws2_32.lib")
#define N 1000
void main () {
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET server;
SOCKET sock;
SOCKADDR_IN sinserv;
SOCKADDR_IN sin;
int port=10;
//initialisation et saisie des informations
//le port
//printf("Port : ");
//scanf("%i",&port);
sinserv.sin_family=AF_INET;
sinserv.sin_addr.s_addr=INADDR_ANY;
sinserv.sin_port=htons(port);
//création de la socket
server=socket(AF_INET,SOCK_STREAM,0);
//la socket est configurée pour écouter l'adresse et le port saisi
bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
//pas de fille d'attente
listen(server,0);
char buffer[N];
int sinsize;
int err=0;
char c;
buffer[0]=' ';
while (1) {
sinsize=sizeof(sin);
//acceptation ou non des appels
if ((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET) {
while (err>-1) {
//on attend dabord le message
memset(buffer,0,sizeof(buffer));
recv (sock,buffer,sizeof(buffer),0);
printf("%s\n",buffer);
//avant dit repondre
//cin.getline((char*)buffer,N);
while( _kbhit() )
{
c=getchar();
buffer[0]=c;
}
err=send(sock,buffer,sizeof(buffer),0);
memset(buffer,0,sizeof(buffer));
}
}
}
}
Voici mon client :
#include <stdio.h>
#include <winsock2.h>
#include <iostream.h>
#include <conio.h>
#pragma comment(lib,"ws2_32.lib")
#define N 1000
void main()
{
printf("\t\t\t\tBienvenue sur \"T\'Chat\".\n\n");
//printf("\t\t\t\tA toi de commencer ...\ \n\n");
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET sock;
SOCKADDR_IN sin;
char ip[15];
int port=10;
//initialisation et saisie des informations
printf("Ip: ");
scanf("%s",ip);
//printf("%s","\nPort: ");
//scanf("%i",&port);
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=inet_addr(ip);
sin.sin_port=htons(port);
//creation dela socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//la socket est configurée pour ecouter l'adresse et le port saisi
bind(sock,(SOCKADDR*)&sin,sizeof(sin));
//connection a la socket
if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
{
printf("La connection a echouee\n");
system("PAUSE");
exit(0);
}
char buffer[N];
memset(buffer,0,sizeof(buffer));
int err=0;
char c;
while(err>-1)
{
//ici on saisie puis on parle
//cin.getline((char*)buffer,N);
while( _kbhit() )
{
c=getchar();
buffer[0]=c;
}
err=send(sock,buffer,sizeof(buffer),0);
memset(buffer,0,sizeof(buffer));
//ici on attend une reponse
err=recv(sock,buffer,sizeof(buffer),0);
printf("%s\n",buffer);
memset(buffer,0,sizeof(buffer));
}
printf("Connection terminee\n\n");
WSACleanup();
system("PAUSE");
}