由标题可知,这篇博客主要讲如何用C语言实现一个C/S模式的程序。主要功能:时间回送。客户机请求,服务器发回时间,客户机进行同步。

废话不多说,下面直接贴出源代码。

代码如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

void client_process(int connfd);

int main(int argc, char *argv[])

{

int ret;

int listenfd;

int connfd;

struct sockaddr_in srvaddr;

struct sockaddr_in cliaddr;

socklen_t addrlen;

listenfd = socket(AF_INET, SOCK_STREAM, 0);

if (listenfd == -1) {

perror("socket");

exit(EXIT_FAILURE);

}

srvaddr.sin_family = AF_INET;

srvaddr.sin_port = htons(8888);

srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);

ret = bind(listenfd, (struct sockaddr *)&srvaddr, sizeof(srvaddr));

if (ret == -1) {

perror("bind");

exit(EXIT_FAILURE);

}

ret = listen(listenfd, 5);

if (ret == -1) {

perror("listen");

exit(EXIT_FAILURE);

}

while (1) {

memset(&cliaddr, 0, sizeof(cliaddr));

addrlen = sizeof(cliaddr);

connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &addrlen);

if (connfd != -1) {

printf("a new client is comming\n");

client_process(connfd);

printf("disconnect\n");

close(connfd);

} else

perror("accept");

}

close(listenfd);

}

void client_process(int connfd)

{

int ret;

char buf[4096];

while (1) {

memset(buf, 0, sizeof(buf));

strcpy(buf, "Kevin@TimeServer $ ");

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

memset(buf, 0, sizeof(buf));

ret = read(connfd, buf, sizeof(buf));

if (ret > 0) {

if (strcmp(buf, "time\r\n") == 0) {

time_t t;

memset(buf, 0, sizeof(buf));

strcpy(buf, "Kevin@TimeServer $ ");

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

time(&t);

strcpy(buf, ctime(&t));

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

}

} else if (ret == -1) {

perror("read");

return;

} else

return;

}

}

1.建立源程序,输入源代码。

2.打开一个终端,编译运行程序。编译程序:gcc cs.c   运行程序:./a.out

3.新开一个终端,输入:telnet localhost 8888

主窗口效果如下:

4.在子窗口中输入:time

子窗口显示如下:

5.关闭子窗口,主窗口显示:连接断开。

效果如下:

好吧,程序就讲到这里了。

注:我使用的是Ubuntu操作系统。

linux 截图程序源码,Linux下C语言实现C/S模式编程(附源码,运行截图)相关推荐

  1. c语言 程序延时 校准,Windows下C语言API修改系统时间,附自动校准时间源码

    C语言Windows时钟的结构体如下: typedef struct _SYSTEMTIME { WORD wYear;              /*年*/ WORD wMonth;         ...

  2. 微信小程序/uni-app 蓝牙打印开发教程和常见问题总结【文末附源码】

    微信小程序/uni-app 蓝牙打印开发教程和常见问题总结[文末附源码] 文章目录 微信小程序/uni-app 蓝牙打印开发教程和常见问题总结[文末附源码] 1️⃣ 写在前面 2️⃣ 蓝牙连接流程 3 ...

  3. C语言小游戏大全,C语言贪吃蛇小游戏(附源码)

    一.C语言小游戏大全,C语言贪吃蛇小游戏(附源码) 贪吃蛇小游戏源码和更多C语言课设项目小游戏源码免 费 下 载 链 接 如下: c语言项目课设小游戏源码资料压缩包.zip-C文档类资源-CSDN下载 ...

  4. Linux 应用程序 嵌汇编,Linux下C语言嵌汇编

    Using Assembly Language in Linux. Intel和AT&T汇编语法差异: 1.前缀: Intel汇编寄存器和立即数无需前缀.后者寄存器前缀为%,立即数前缀为$. ...

  5. Windows 和 Linux 应用程序从上到下调用层次比较

    刚毕业的时候,做了将近一年的Window下的程序开发,主要用MFC,那是也不明白程序在操作系统角度从上到下的整个调用层次.遇到调用库函数,不明白,就查MSDN,每个月1500行代码左右,那时以为这就是 ...

  6. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解

    GNU是为Linux提供免费软件支持的工具;红帽与乌邦图都是Linux的一个版本. Linux登入时登入名为root的是最高级别 Linux系统中的文件夹: /:根目标 bin:二进制可执行文件 li ...

  7. linux的程序员计算器,linux中的计算器

    windows系统安装时会自带计算器,在cmd中运行calc即可打开.那么linux系统中有没有计算器呢?答案是肯定的. linux下的图形计算器 linux系统一般也会默认安装一个图形界面的计算器, ...

  8. 三星linux应用程序,三星推出Linux on DeX应用程序,正式发布高端手机新品W2019

    描述 Canonical日前在官方博客上发文称,三星宣布推出了Linux on DeX项目.通过三星的DeX,用户能在旗舰级Galaxy设备上获得大屏的体验. 官方表示,Linux on DeX支持开 ...

  9. 天天酷跑php源码_Java实现天天酷跑小游戏完整代码(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

最新文章

  1. dct变换的主要优点有哪些_网络拓扑结构有哪些类型 不同类型网络拓扑结构优缺点介绍【图文】...
  2. 【JulyEdu-Python基础】第 8 课:Python第三方库
  3. 《深入理解Android:Telephony原理剖析与最佳实践》一1.1 智能手机的系统结构
  4. 播放视频比较好的框架
  5. CSS3的几个变形案例……
  6. php 百分比,小数2位
  7. 深度学习资料整理(深度神经网络理解)
  8. top 监控系统内存、进程的资源占用情况
  9. linux服务器上已安装R 用户下载R包,服务器R语言包下载、R包离线安装
  10. 苹果4如何添加时间插件_【苹果搞机】苹果设备越狱后的第一步如何添加软件源...
  11. 轻松制作趣味配图,这个小程序真会玩
  12. 触屏查看大图(可以缩放)
  13. 数值计算及matlab实现,用MATLAB实现数值计算
  14. mySQL首行缩进快捷键_word段首如何缩进两个字符
  15. CNI网络插件之flannel
  16. 七大行星排列图片_八大行星图片欣赏
  17. kivy开发android启动器,从kivy启动android播放器
  18. 雷蛇鼠标:单机偶尔变成双击
  19. 80psi等于多少kpa_压力单位换算(如psi)
  20. android 7.0 2g,LG美国定制机曝光:2GB内存,搭载安卓7.0系统

热门文章

  1. Revit 2011二次开发“弹出对话框,得到输入的值”
  2. JDK源码学习之前言
  3. SpringBoot项目请求路径中有正反斜杠的处理办法
  4. Vivo叉九Android版本,vivo狂野飙车9正版下载
  5. CSDN上传资源时一直提示 请填写资源tag
  6. 大数据新手之路四:联合使用Flume和Kafka
  7. 前端做聊天软件的功能难点
  8. ELK - 实用日志分析系统
  9. Codewars-Javascript训练手册:Date 对象
  10. 基于json-lib.jar包Json实例程序