用socket获取主机的信息

下面的程序用户获取主机的日期:

#include<sys/socket.h>
#include<stdio.h>
#include<netinet/in.h>
#include<netdb.h>
int main()
{
    int sockfd;
    int len,result;
    struct sockaddr_in addr;
    struct servent *servinfo;
    char buffer[128];

    servinfo=getservbyname("daytime","tcp");
    if (!servinfo)
    {
        printf("no daytime service!/n");
        return 1;
    }
    printf("daytime service port is :%d  %s  %s/n",ntohs(servinfo->s_port),servinfo->s_name,servinfo->s_proto);

    sockfd=socket(AF_INET,SOCK_STREAM,0);
    addr.sin_family=AF_INET;
    addr.sin_port=servinfo->s_port;
    addr.sin_addr.s_addr=inet_addr("127.0.0.1");
    len=sizeof addr;
    result=connect(sockfd,(struct sockaddr *)&addr,len);
    if (result==-1)
    {
        printf("Connect error!/n");
        return 1;
    }
    result=read(sockfd,buffer,sizeof buffer);
    buffer[result]='/0';
    printf("daytime return:%s/n",buffer);
    close(sockfd);
    return 0;
}

要特别住的的是,linux默认情况下没有开启daytime服务,所以必须现打开,否则得到的结果是Connect error!
要开启服务,可编辑/etc/inetd.conf但是后来改成了/etc/xinetd.conf,也可用图形界面。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值