Utiliser une socket en C pas en C++

Manthis Messages postés 40 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 2 octobre 2006 - 30 mai 2004 à 16:01
Manthis Messages postés 40 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 2 octobre 2006 - 30 mai 2004 à 20:03
Bonjour,

J'aurais voulu savoir si qqn connais un moyen pour que je puisse utiliser des sockets en C. Je precise en C et pas en C++. Je précise que je travaille sous devcpp

Merci

3 réponses

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 10
30 mai 2004 à 18:46
deja ma premiere question es pourquoi absolument en C?
bon bref c'est ton choix et tu dois avoir tes raisons, mais tu c'est tu utilises les sockets pareil en C que en C++, seul les fonction d'affichage change et tout ce qui differe entre les langages, mais la facon d'utiliser les sockets est la meme !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
Manthis Messages postés 40 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 2 octobre 2006
30 mai 2004 à 20:01
Bah je dis absolument en C parce que je dois faire un projet en C pour l'école...
Le truc c'est que j'ai essayé de mettre le code que j'ai trouvé pour les sockets dans la MSDN il marche très bien en C++ mais dès que je le mets en C DevCPP ne le compile plus... voila mon problème.
0
Manthis Messages postés 40 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 2 octobre 2006
30 mai 2004 à 20:03
Voila je mets ici le code que j'utilise:

#include <stdio.h>
#include "winsock2.h"

void main() {

// Initialize Winsock.
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf("Error at WSAStartup()\n");

// Create a socket.
SOCKET m_socket;
m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( m_socket == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return;
}

// Connect to a server.
sockaddr_in clientService;

clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
clientService.sin_port = htons( 27015 );

if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
printf( "Failed to connect.\n" );
WSACleanup();
return;
}

// Send and receive data.
int bytesSent;
int bytesRecv = SOCKET_ERROR;
char sendbuf[32] = "Client: Sending data.";
char recvbuf[32] = "";

bytesSent = send( m_socket, sendbuf, strlen(sendbuf), 0 );
printf( "Bytes Sent: %ld\n", bytesSent );

while( bytesRecv == SOCKET_ERROR ) {
bytesRecv = recv( m_socket, recvbuf, 32, 0 ); if ( bytesRecv 0 || bytesRecv WSAECONNRESET ) {
printf( "Connection Closed.\n");
break;
}
if (bytesRecv < 0)
return;
printf( "Bytes Recv: %ld\n", bytesRecv );
}

return;
}
0