Socket sous Linux & Windows
Salut,
Voila je cherche de partout comme un dingue depuis un bon moment un tuto sur le dev de Socket qui marcherais sous Windows & Linuxen touchant l moins possible au code source.
J'ai trouver quelque exemple du genre :
Code:
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
|
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
/***************************************************************************************************************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/
#define WM_SOCKET WM_USER+100
/***************************************************************************************************************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/
SOCKET Sock;
SOCKADDR_IN C_adresse; // adresse de la cible de la communication
WSADATA WSAData;
int Res;
/***************************************************************************************************************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/
bool Connexion(void)
{
if((Res = WSAStartup(MAKEWORD(2,2), &WSAData)) != 0)
{
//DisplayErreur("Initialisation de WSA impossible !", 0);
return false;
}
else
{
Sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
C_adresse.sin_family = AF_INET;
C_adresse.sin_port = htons(6073);
C_adresse.sin_addr.s_addr = inet_addr("127.0.0.1");
Res = connect(Sock, (SOCKADDR *)&C_adresse, sizeof(C_adresse));
if(Res!=0)
{
//DisplayErreur("Connexion au serveur impossible !", 0);
return false;
}
}
return true;
}
/***************************************************************************************************************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/
void main()
{
char *buffer = new char[255];
Connexion();
recv(Sock, buffer, sizeof(buffer), 0);
printf("%s\n", buffer);
closesocket(Sock);
WSACleanup();
}
/***************************************************************************************************************************/
/***************************************************************************************************************************/
/***************************************************************************************************************************/ |
Il se connect bien (pas encore testé sous linux mais ont me dis que sa devrait marcher si j'enlève les tous les "WSA").
Par contre en ce qui concerne le recv() j'ai un problème, dès qu'il à recut un message il passe à la ligne en dessous et ferme le programme.
Comment faire pour qu'il réceptionne en continue, sans sortir du recv() et sans bloquer le reste du programme.
Merci pour votre aide.