sockdist.cpp

来自「调用线程pthread 加锁和解锁的功能」· C++ 代码 · 共 96 行

CPP
96
字号
#include <string.h>//pour memcpy au moins
#include <stdio.h>//perror
#include <sys/types.h>
#include <sys/socket.h>//constantes, sockaddr generique, socket...
#include <stdlib.h>
#include "sockdist.h"

/////////////////////////////////////////////////////////////////
void SockDist::initparam(){
   sRetour=sLen=0;
   adrDist=NULL;
}

/////////////////////////////////////////////////////////////////
SockDist::SockDist( const char *nomHote, const char * nomServ,
                         const char *protoServ){
   struct hostent *hst; /* pour recuperer les param du host */
   struct servent *srv; /* pour recuperer les param du service */

   initparam();
   adrDist=new sockaddr_in;
   adrDist->sin_family = sDom;
      /* parametres du hote distant */
   hst = gethostbyname (nomHote);
   if (hst == NULL){
     cout << "hote "<<nomHote<< " inconnu\n";
      exit (0);
   }
   adrDist->sin_addr.s_addr = ((struct in_addr
                               *)(hst->h_addr))->s_addr;
      /* ou au choix :
   memcpy((char *)&adrDist->sin_addr,(char *)hst->h_addr,
                                             hst->h_length)
                                             eh oui....*/

   srv = getservbyname (nomServ, protoServ);
   if (srv == NULL){
     cout <<nomServ<< "non trouve dans services\n";
     exit (0);
      }
   adrDist->sin_port = srv->s_port; /* numero de port du service */
   sLen=sizeof(*adrDist);
}

/////////////////////////////////////////////////////////////////
SockDist::SockDist( const char *nomHote, short numPort){

   struct hostent *hst; /* pour recuperer les param du host */

   initparam();
   adrDist=new sockaddr_in;
   adrDist->sin_family = sDom;
   hst = gethostbyname (nomHote);
   if (hst == NULL){
     cout << "hote "<<nomHote<< " inconnu\n";
      exit (0);
   }
   adrDist->sin_addr.s_addr = ((struct in_addr
                               *)(hst->h_addr))->s_addr;
      /* ou au choix toujours:
   memcpy((char *)&adrDist->sin_addr,(char *)hst->h_addr,
                                             hst->h_length)
                                             eh oui....*/

   adrDist->sin_port = htons(numPort); /* numero de port du service */
   sLen= sizeof(*adrDist);
}

/////////////////////////////////////////////////////////////////
SockDist::SockDist(){
   initparam();
   adrDist=new sockaddr_in;
   sLen=sizeof(*adrDist);
}

/////////////////////////////////////////////////////////////////
SockDist::~SockDist(){
   delete adrDist;
}

/////////////////////////////////////////////////////////////////
sockaddr_in * SockDist::getAdrDist(){
   return adrDist;
}

/////////////////////////////////////////////////////////////////
int SockDist::getsLen(){
   return sLen;
}






⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?