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

📄 sock_gethost.c

📁 Linux大学上机源码学习
💻 C
字号:
#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);
    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];
    sockfd=socket_connect(host,"13");
    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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -