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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#pragma comment(lib,"WSOCK32.LIB")
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#include <errno.h>
/*************************************************
serveur en mode console
*************************************************/
#define PORT 5005
#define Nb_Max_de_Client 10
void Fonction_Thread_Serveur(LPVOID param)
{
char Message_Emis[255];
SOCKET Desc_Socket_Locale;
int fin=FALSE;
Desc_Socket_Locale=(SOCKET)param;
while(!fin)
{
printf("message : ");
gets(Message_Emis);
send(Desc_Socket_Locale,Message_Emis,sizeof(Message_Emis),0);
}
closesocket(Desc_Socket_Locale);
}
int main(void)
{
int Code_Retour;
SOCKET Desc_Socket_Connection;
SOCKADDR_IN Adresse_Socket_Connection;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested=MAKEWORD(1,1);
Code_Retour=WSAStartup(wVersionRequested,&wsaData);
if(Code_Retour!=0)
{
perror("WSAStartup\t");
getch();
WSACleanup();
exit(errno);
}
printf("la version supportee est : %d.%d\n",
LOBYTE(wsaData.wHighVersion),
HIBYTE(wsaData.wHighVersion)
);
Desc_Socket_Connection=socket
(
AF_INET,
SOCK_STREAM,
0
);
printf("valeur de la socket = %d\n",Desc_Socket_Connection);
ZeroMemory(&Adresse_Socket_Connection,sizeof(Adresse_Socket_Connection));
Adresse_Socket_Connection.sin_family=AF_INET;
Adresse_Socket_Connection.sin_port=htons(PORT);
Code_Retour=bind
(
Desc_Socket_Connection,
(struct sockaddr*)&Adresse_Socket_Connection,
sizeof(Adresse_Socket_Connection)
);
if(Code_Retour!=0)
{
perror("bind\t");
getch();
closesocket(Desc_Socket_Connection);
WSACleanup();
exit(errno);
}
Code_Retour=listen(Desc_Socket_Connection,Nb_Max_de_Client);
if(Code_Retour!=0)
{
perror("listen\n");
WSACleanup();
exit(errno);
}
printf("serveur en attente d'une connection\n\n");
printf("***************arret du serveur par<CTRL><C>**************\n\n");
while(TRUE)
{
SOCKET * pt_Nouveau_Socket_Serveur;
SOCKADDR_IN Adresse_Socket_Cliente;
int Longueur_Adresse;
HANDLE hthread;
DWORD threadID;
pt_Nouveau_Socket_Serveur = new SOCKET;
Longueur_Adresse = sizeof(Adresse_Socket_Cliente);
*pt_Nouveau_Socket_Serveur=accept
(
Desc_Socket_Connection,
(struct sockaddr*)&Adresse_Socket_Cliente,
&Longueur_Adresse
);
printf("connection accepte depuis le port client %d\n",
ntohs(Adresse_Socket_Cliente.sin_port));
hthread=CreateThread
(
NULL,
0,
(LPTHREAD_START_ROUTINE)Fonction_Thread_Serveur,
(LPVOID)*pt_Nouveau_Socket_Serveur,
0,
&threadID
);
}
return (0);
} |
Partager