socket_client.c

来自「Linux大学上机源码学习」· C语言 代码 · 共 82 行

C
82
字号
#include <errno.h>#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <arpa/inet.h>#include <stdlib.h>void init_sockaddr(struct sockaddr_in *name,char *hostname,char *serv){   struct hostent *hp;  char *host,myname[255];  if(hostname==NULL){    gethostname(myname,sizeof(myname));    host=myname;    printf("your hostname is :%s\n",host);  } else   host=hostname; /* get host address information */  if((hp=gethostbyname(host))==NULL){    printf("Unknown host:%s\n",host);    exit(-1);  } /* add the IP and port of server */  bzero(name,sizeof(struct sockaddr));  if(hp->h_addrtype==AF_INET){    name->sin_family=AF_INET;    bcopy(hp->h_addr_list[0],&name->sin_addr,hp->h_length);    printf("addr=%o,len=%d\n",&name->sin_addr.s_addr,hp->h_length);    if (serv==NULL)       name->sin_port=htons(0);    else       name->sin_port=htons(atoi(serv));   } else{    printf("Unknown address type\n");    exit(-1);  }}int socket_connect(char *hostname,char *serv_port)  {    int sockfd;    struct sockaddr_in sockaddr;    struct hostent *hp;    char *host,myname[104];    /* init the IP and port of server*/    init_sockaddr(&sockaddr,hostname,serv_port);    if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){          printf("socket create error\n");          exit(0);     }          if((connect(sockfd,(struct sockaddr *)&sockaddr,sizeof(sockaddr)))<0){          printf("cann't connect server%s\n",strerror(errno));          exit(0);   }    return(sockfd); }int main(int argc,char **argv)  {     int sockfd,n;    char recvbuff[256],*host;    struct sockaddr_in servaddr;/*    if(argc<2)      host=NULL;    else       host=argv[1];*/    host=NULL;    sockfd=socket_connect(host,"2003");    write(sockfd,argv[1],sizeof(argv[1]));    while((n=read(sockfd,recvbuff,256))>0){      recvbuff[n]=0;      fputs(recvbuff,stdout);    }   if(n<0){      printf("read error");      exit(0);   }  return 0;}      

⌨️ 快捷键说明

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