c语言服务器客户端异步通信

  • I3_251990
    了解作者
  • 5.2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-16 11:10
    上传日期
本例子用c语言描述服务器客户端异步通信模式,
src.rar
  • src
  • client.c
    2.4KB
  • service.c~
    3.6KB
  • client.c~
    2.4KB
  • makefile
    575B
  • service.c
    3.7KB
内容介绍
/****************************************************************************** Copyright(C) Tienon Technology Co., Ltd. All Right Reserved 文 件 名: service.c 文件内容: 返回文件大小 版本信息: 201005-31 开发历史: *** 201005 创建文本 *** ******************************************************************************/ /****************************************************************************** 头文件引用区域 ******************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h rel='nofollow' onclick='return false;'> #include <netinet/in.h> #include <errno.h> #include <string.h> #include <signal.h> #include <sys/wait.h> #include <sys/select.h> #include <sys/time.h> #include <unistd.h> /****************************************************************************** 宏定义区域 ******************************************************************************/ #define BUFLEN 1024 #define MAX(a,b) ((a)>(b)?(a):(b)) /****************************************************************************** 申明区域 ******************************************************************************/ typedef void Sigfunc (int); void str_echo(FILE *,int); /****************************************************************************** 函 数 名 main() 函数编号: 功能描述 service 主函数 入口参数: 返回说明: return 0 --成功 引用变量: 开发历史: ******************************************************************************/ int main(int argc, char **argv) { int iConnfd; int iListenfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr; struct sockaddr_in servaddr; // creat socket iListenfd = socket(AF_INET, SOCK_STREAM, 0); memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(5358); // 设置绑定参数 bind(iListenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); listen(iListenfd,8); // 侦听 while(1) { clilen = sizeof(cliaddr); if((iConnfd = accept(iListenfd, (struct sockaddr*)&cliaddr, &clilen)) < 0) { if(errno == EINTR) { fputs("accept error: EINTR\n",stdout); continue; } else { fputs("accept error..\n",stdout); } } // 创建子进程实现异步传输模式 if((childpid = fork()) == 0) { close(iListenfd); str_echo(stdin,iConnfd); exit(0); } close(iConnfd); } } /****************************************************************************** 函 数 名 str_echo() 函数编号: 功能描述 打出传输字符 入口参数: 返回说明: void 引用变量: 开发历史: ******************************************************************************/ void str_echo(FILE *fp,int sockfd) { int imaxfdp; int iline = 0; char *pstr; char szSendbuf[BUFLEN] = { 0 }; char szRecvbuf[BUFLEN] = { 0 }; fd_set rset; // 文件描述符用于监视文件描述符 FD_ZERO(&rset); while(1) { FD_SET(fileno(fp), &rset); FD_SET(sockfd, &rset); imaxfdp = MAX(fileno(fp), sockfd) + 1; // 选择最大的值再加1 select(imaxfdp, &rset, NULL, NULL, NULL); if(FD_ISSET(sockfd, &rset)) { if(iline = read(sockfd, szRecvbuf, BUFLEN) == 0) // 获取sockfd中的值 { return; } if(iline == -1) { break; } printf("%s\n", szRecvbuf); memset(szRecvbuf, 0, BUFLEN); } if(FD_ISSET(fileno(fp), &rset)) { fgets(szSendbuf, 100, stdin); pstr = szSendbuf; while('\n' != *pstr) { pstr++; } *pstr = '\0'; write(sockfd, szSendbuf, strlen(szSendbuf));// 写入到sockfd中 } } } /****************************************************************************** main()函数结束 ******************************************************************************/
评论
    相关推荐
    • RTSP 服务器C语言
      RTSP是实时流媒体传输协议,服务器和客户端之间通过RTSP协议实现握手和认证过程,通过RTP协议传输视频数据包,本资源通过C语言实现了RTSP服务器的功能。
    • 最新仙镜传说服务器c语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。 这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!...
    • 守护进程时间服务器C语言实现.rar
      守护进程时间服务器C语言实现,适合编程小白
    • 最新仙镜传说服务器C语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。 这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!
    • RTSP服务器C语言
      hi3516A输出h264码流,rtsp服务器完成推流,环形缓冲,异步监测。
    • http代理服务器C语言
      以前上TCP/IP课程时做的课程设计,很小的一个HTTP代理服务器,基于socket编程。VC6.0环境的。原创程序。 那时候还是新手,程序很简陋,不过好歹能用。 学校学习相关课程的学生可以参考下,当个课程作业没问题,老手...
    • 最新仙镜传说服务器C语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!我...
    • 最新仙镜传说服务器C语言源码.zip
      最新仙镜传说服务器C语言源码.zip为游戏源代码,作为开发游戏的一个很好DEMO
    • web服务器 C语言
      一个用C语言编写的WEB服务器,用socket编程
    • C语言并发服务器
      C语言并发服务器,包括客户端和服务器端。