linux网络编程服务端,Linux网络编程入门

我们按照服务器模型的工作流程以及API,实现一个服务端和客户端,功能如下:

运用前面章节介绍的API,保证客户端可以正常连接服务端。

客户端可以获取服务端的当前时间,即服务端将当前时间发送给客户端。

本节我们实现一个服务端,如下:

#include

#include

#include

#include // sockaddr_in

#include

#include

#include

int main()

{

// 此处省略重复代码

while (1)

{

printf("等待连接中...\n");

int connfd = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_len); // connect socket

if (connfd == -1) {

perror("accept error");

exit(1);

}

printf("accept ok\n");

printf("connect from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

char time_message[100];

timer_t now_time = (timer_t)time(NULL);

snprintf(time_message, sizeof(time_message), "%.24s\n", ctime((const timer_t)&now_time));

send(connfd, time_message, sizeof(time_message), 0);

close(connfd);

}

close(server_socket);

return 0;

}

第7行引入了头文件time.h,其声明了处理日期与时间类型的函数。

第13行while(1)循环,保证服务端在不发生异常的时候,一直循环提供服务。

第16行输出连接客户端的ip地址以及端口号。

第26~28行产生当前服务端的时间。其中第56行time函数返回当前日历时间,第57行利用ctime函数生成当地时间,并将当地时间写入time_message字符数组。

第30行利用send函数将时间发送给客户端。

右侧打开名为server_time的c文件,试编写个时间获取服务端,并编译测试。

考虑到环境只有一个终端,我们利用nohup命令将服务端放置到系统后台。nohup命令格式如下:

nohup Command &

通过使用nohup命令,该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

如下图所示:

e89d5daa7cdb5e0de6f154957ed87d2a.png

利用gcc编译server_time.c生成可执行文件server_time,即服务端。

执行nohup ./server_time & 将其放到系统后台。

可以通过ps -ef查看系统中进程,发现确实存在CMD为./server_time.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值