#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <errno.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MAXSOCKETLEN 1024

static void err_doit(int errnoflag, const char *fmt, va_list ap)
{
char buf[1024];

vsprintf(buf, fmt, ap);
if (errnoflag)
{
if (errno >= 0 && errno <= sys_nerr)
{
sprintf(buf+strlen(buf), ": %s", strerror(errno));
}
}

strcat(buf, "\n");
fflush(stdout);
fputs(buf, stderr);
fflush(stderr);
}

void err_print(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
err_doit(1, fmt, ap);
va_end(ap);
exit(1);
}

int main()
{

int sockfd = 0;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
err_print("socket fd created failed");
}

struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(43521);

if (bind(sockfd, (struct sockaddr *)(&servaddr), sizeof(servaddr)) < 0)
{
err_print("bind failed");
}

if (listen(sockfd, MAXSOCKETLEN) < 0)
{
err_print("listen failed");
}

while (1)
{
char buff[1024];
memset(buff, 0,sizeof(buff));

int connfd = -1;
connfd = accept(sockfd, (struct sockaddr *)NULL, NULL);
if (connfd < 0)
{
err_print("accept failed");
}

time_t ticks = time(NULL);
snprintf(buff, sizeof(buff), "%.24s", ctime(&ticks));

size_t size = send(connfd, buff, strlen(buff), 0);
printf("send size:%d, message:%s\n", (int)size, buff);
if (size < 0)
{
err_print("write failed");
}

close(connfd);
};

return 0;
}

最新文章

  1. Nodejs之MEAN栈开发(五)---- Angular入门与页面改造
  2. postfix启动失败
  3. Flink - RocksDBStateBackend
  4. ado.net C#如何实现数据库增删改查
  5. loadrunner负载测试实例
  6. 启动weblogic的错误:Could not obtain an exclusive lock to the embedded LDAP data files directory
  7. 17.C#类型判断和重载决策(九章9.4)
  8. HDU5438--Ponds (拓排+BFS)
  9. 慕课网-安卓工程师初养成-4-8 Java循环语句之 do...while
  10. 06day2
  11. POJ1182食物链 (并查集)
  12. GridView 设置背景透明以及Item的点击动画
  13. 查看Android系统当前运行的activity
  14. HDU 5773 The All-purpose Zero(树状数组)
  15. Treap详解
  16. svn服务器配置与客户端的使用
  17. 如何在Java应用中提交Spark任务?
  18. 【我们一起写框架】MVVM的WPF框架(三)—数据控件
  19. [转] Form 表单数据处理 简单教程 formidable 使用心得
  20. 688. Knight Probability in Chessboard棋子留在棋盘上的概率

热门文章

  1. .net core kafka 入门实例 一篇看懂
  2. haproxy mycat mysql 读写分离MHA高可用
  3. hdu2665可持久化线段树,求区间第K大
  4. POJ3169
  5. 走迷宫(三):在XX限制条件下,是否走得出。
  6. webpack-dev-server 使用 react-router 启用 browserhistory 采坑记
  7. PowerDesigner使用教程(一)
  8. remote desktop能实现什么?远程桌面管理的意义是什么?
  9. 小心 HttpClient 中的 FormUrlEncodeContent 的 bug
  10. Rocket - util - Frequency