⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sockdist.cpp

📁 调用线程pthread 加锁和解锁的功能
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -