Recent Changes - Search:

Accueil

OpenSSL

SyncML

Apache Portable Runtime

Libxml2

Net-snmp

CUrl

Boost

Perl

ZLib

Samba

VPN

Serveurs de messagerie

edit

OpenSSL/ServeurTCP

serveur TCP

// serveur.cpp application console
//

#include "stdafx.h"

// insérer Ws2_32.lib dans Link>General>Library Modules



#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(2); }





int main(int argc, char* argv[])
{
        WSADATA wsaData;
        SOCKET sd;
        struct sockaddr_in sa;
        hostent* remoteHost;
        int err;
        char recvbuf[32];
        int bytesRecv;

        //-----------------------------------------------
        // Initialize Winsock
        WSAStartup(MAKEWORD(2,2), &wsaData);


        sd = socket(AF_INET, SOCK_STREAM, 0);       CHK_ERR(sd, "socket");

        memset (&sa, '\0', sizeof(sa));
        sa.sin_family      = AF_INET;
        //sa.sin_addr.s_addr = inet_addr ("172.31.198.15");   /* Server IP */

        remoteHost = gethostbyname("sec030dev146");
        sa.sin_addr.s_addr = *((u_long*)remoteHost->h_addr_list[0]);
        sa.sin_port        = htons     (400);          /* Server Port number */



        bool bOptVal = TRUE;
        setsockopt(sd,SOL_SOCKET,SO_REUSEADDR, (char*)&bOptVal,sizeof(bOptVal));


        if(bind(sd,(struct sockaddr *)&sa,  sizeof(sa))== SOCKET_ERROR){
                printf(WSAGetLastErrorMessage("client"));
                goto cleanUp;
        }


        if(listen(sd,SOMAXCONN)== SOCKET_ERROR){
                printf(WSAGetLastErrorMessage("client"));
                goto cleanUp;
        }



        SOCKET AcceptSocket;

        while(1) {
                AcceptSocket = SOCKET_ERROR;
                while( AcceptSocket == SOCKET_ERROR ) {
                        AcceptSocket = accept( sd, NULL, NULL );
                }
                printf("Client connected.\n");


                bytesRecv = SOCKET_ERROR;

                while( bytesRecv == SOCKET_ERROR ) {
                        bytesRecv = recv( AcceptSocket, recvbuf, 32, 0 );
                        if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
                                printf( "Connection Closed.\n");
                                break;
                        }
                        recvbuf[bytesRecv]='\0';
                        printf( "Bytes Recv: %ld ***%s***\n", bytesRecv,recvbuf );
                }

        }



cleanUp:
        WSACleanup();

        return 0;
}
 
Edit - History - Print - Recent Changes - Search
Page last modified on January 09, 2006, at 11:55 PM