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

📄 tclient.ec

📁 中兴ZX10交换机接口代码
💻 EC
字号:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdarg.h>
#include<string.h>
#include<errno.h>
#include<netdb.h>
#include<fcntl.h>
#include<sys/time.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include"skel.h"

static void set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol);
void error(int status,int err,char *fmt,...);
static void client(SOCKET s,struct sockaddr_in *peerp);
char *program_name;

int main(int argc,char **argv)
{
 struct sockaddr_in peer;
 SOCKET s;
 
 INIT();
 set_address(argv[1],argv[2],&peer,"tcp");
 s=socket(AF_INET,SOCK_STREAM,0);
 if(!isvalidsock(s))
   error(1,errno,"socket call failed");
 if(connect(s,(struct sockaddr *)&peer,sizeof(peer)))
   error(1,errno,"connect failed");
 client(s,&peer);
 EXIT(0);
}
/*****************************************************/
static void client(SOCKET s,struct sockaddr_in *peerp)
{
 int rc;
 char buf[120];
 for(;;)
 {
  rc=recv(s,buf,sizeof(buf),0);
  if(rc<=0)
    break;
  write(1,buf,rc);
 }
}

/*****************************************************************/
 static void set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol)
 {
  struct servent *sp;
  struct hostent *hp;
  char *endptr;
  short port;
  
  bzero(sap,sizeof(*sap));
  sap->sin_family=AF_INET;
  if(hname!=NULL)
  {
   if(!inet_aton(hname,&sap->sin_addr))
   {
    hp=gethostbyname(hname);
    if(hp==NULL)
      error(1,0,"unknown host:%s\n",hname);
    sap->sin_addr=*(struct in_addr *)hp->h_addr;
   }
  }
  else
    sap->sin_addr.s_addr=htonl(INADDR_ANY);
  port=strtol(sname,&endptr,0);
  if(*endptr=='\0')
    sap->sin_port=htons(port);
  else
  {
   sp=getservbyname(sname,protocol);
   if(sp==NULL)
      error(1,0,"unknow service:%s\n",sname);
   sap->sin_port=sp->s_port;
  }
 }
 /*****************************************************************/
 void error(int status,int err,char *fmt,...)
 {
  va_list ap;
  va_start(ap,fmt);
  fprintf(stderr,"%s:",program_name);
  vfprintf(stderr,fmt,ap);
  va_end(ap);
  if(err)
     fprintf(stderr,": %s (%d) \n",strerror(err),err);
  if(status)
     EXIT(status);
 }
 /*****************************************************************/ 
 

⌨️ 快捷键说明

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