吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3615|回复: 13
收起左侧

[其他原创] 自己编写一个服务器来告诉自己时间

  [复制链接]
s02lk 发表于 2019-2-12 10:36
本次测试是在Ubuntu14.0.4上面测试的,采用的虚拟机是VMware12.0。这个是我作为Linu学习者写的,所以难免会有许多问题,不成熟的地方望大神指教!
首先给出运行结果示意图,大家感兴趣就去看看,因为是代码所以比较枯燥
下面给出服务器端的程序:
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<time.h>
#include<string.h>

#define PORTNUM 13000
#define HOSTLEN 256
#define oops(msg) {perror(msg);exit(1);}

int main(int agc,char *agv[])
{
  struct sockaddr_in saddr;
  struct hostent *hp;
  char hostname[HOSTLEN];
  int sock_id,sock_fd;
  FILE *sock_fp;
  time_t thetime;

  /*
   *Step1:ask kernel for a socket
   */
   sock_id=socket(PF_INET,SOCK_STREAM,0);
   if(sock_id==-1)
   {
     oops("socket");
   }

   /*
    *Step2: bind address to socket.Adress is host,port
    */
    bzero((void*)&saddr,sizeof(saddr));
    gethostname(hostname,HOSTLEN);
    hp=gethostbyname(hostname);
    bcopy((void*)hp->h_addr,(void*)&saddr,hp->h_length);
    saddr.sin_port=htons(PORTNUM);
    saddr.sin_family=AF_INET;
    if(bind(sock_id,(struct sockaddr*)&saddr,sizeof(saddr))!=0)
    {
      oops("bind");
    }

    /*
     *allow incoming calls with Qsize=1 on socket
     */
     if(listen(sock_id,1)!=0)
     {
       oops("listen");
     }


     /*
      * main loop:accept(),write(),close()
      */
      while(1)
      {
        sock_fd=accept(sock_id,NULL,NULL);
	printf("Wow!got a call!\n");
	if(sock_fd==-1)
	{
	  oops("accept");
	}
	sock_fp=fdopen(sock_fd,"w");
	if(sock_fp==NULL)
	{
	  oops("fdopen");
	}
	thetime=time(NULL);
	fprintf(sock_fp,"The time here is...");
	fprintf(sock_fp,"%s",ctime(&thetime));
	fclose(sock_fp);
	 
      }
  return 0;
}


下面是客户端的程序
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<string.h>
#include<unistd.h>

#define oops(meg)   {perror(meg);exit(1);}

int main(int agc,char *agv[])
{  
  struct sockaddr_in servaddr;
  struct hostent *hp;
  int sock_id,sock_fd;
  char message[BUFSIZ];
  int messlen;

  /*
   *Step1: Get a socket
   */
   sock_id=socket(AF_INET,SOCK_STREAM,0);
   if(sock_id==-1)
   { 
     oops("socket");
   }

   /*
    Step2: connect the server
    */
    bzero(&servaddr ,sizeof(servaddr));
    hp=gethostbyname(agv[1]);
    if(hp==NULL)
    {
      oops(agv[1]);
    }
    bcopy(hp->h_addr,(struct sockaddr *)&servaddr.sin_addr,hp->h_length);
    servaddr.sin_port=htons(atoi(agv[2]));
    servaddr.sin_family=AF_INET;
    if(connect(sock_id,(struct sockaddr*)&servaddr,sizeof(servaddr))!=0)
    {
      oops("connect");
    }

    /*
     *Step3: transfer data form server
     */
     messlen=read(sock_id,message,BUFSIZ);
     if(messlen==-1)
     {
       oops("read");
     }
     if(write(1,message,messlen)!=messlen)
     {
        oops("write");
     }
     close(sock_id);
 
}

这个是启动服务端的程序

这个是启动服务端的程序

这个是启动的客户端的程序

这个是启动的客户端的程序

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| s02lk 发表于 2019-2-12 10:38
之后我会尽量写一个如何搭建vps的帖子,也算是自己的学习分享给大家!
 楼主| s02lk 发表于 2019-2-13 16:23
zhcj66 发表于 2019-2-13 14:15
软件也是刚刚接触,有没有相关写bat的资料
现在是不是java能实现的东西,python都可以搞定

这个我还真的不知道。但是java现在还是有很大的人群基数的。各有各的优点。但是我们老师说学python的话的是那种985类似的学生去做可能好找工作,一般的学校的学生学了可能不太好找工作
zhcj66 发表于 2019-2-13 14:15
s02lk 发表于 2019-2-13 08:56
在windows上写一个bat,然后设置定时运行就可以了吧。
对于python我也是小白,我也就是c,c++,java懂一点 ...

软件也是刚刚接触,有没有相关写bat的资料
现在是不是java能实现的东西,python都可以搞定
怒江指海 发表于 2019-2-12 11:20
大神,先膜拜了
 楼主| s02lk 发表于 2019-2-12 11:54

我也是新手,大家相互学习,加油!
jun57663796 发表于 2019-2-12 11:55
好帖子 谢谢分享!
zhcj66 发表于 2019-2-12 11:59
s02lk 发表于 2019-2-12 10:38
之后我会尽量写一个如何搭建vps的帖子,也算是自己的学习分享给大家!

问一下大神,windows server 能否实现客户端指定 硬盘文件夹的自动备份?
jimo 发表于 2019-2-12 12:02
从服务端拿时间,不错
azusys 发表于 2019-2-12 16:03
zhcj66 发表于 2019-2-12 11:59
问一下大神,windows server 能否实现客户端指定 硬盘文件夹的自动备份?

用软件自动备份的软件就可以啊 或者自己写批处理 定时执行
zhcj66 发表于 2019-2-13 08:18
azusys 发表于 2019-2-12 16:03
用软件自动备份的软件就可以啊 或者自己写批处理 定时执行

有什么软件? 程序还不会,刚刚开始学习 python
 楼主| s02lk 发表于 2019-2-13 08:56
zhcj66 发表于 2019-2-13 08:18
有什么软件? 程序还不会,刚刚开始学习 python

在windows上写一个bat,然后设置定时运行就可以了吧。
对于python我也是小白,我也就是c,c++,java懂一点。加油,我同学学的python感觉很强!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 03:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表