server

  1. #include <stdio.h>
  2. #include <sys/types.h> /* See NOTES */
  3. #include <sys/socket.h>
  4. #include <unistd.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <arpa/inet.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10.  
  11. int listenfd;
  12. listenfd = socket(PF_INET,SOCK_STREAM,);
  13. if(listenfd < )
  14. {
  15. printf("creat socket failed\n");
  16. exit();
  17. }
  18. struct sockaddr_in servaddr;
  19. memset(&servaddr,,sizeof(servaddr));
  20. servaddr.sin_family = AF_INET;
  21. servaddr.sin_port = htons();
  22. servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//host any address
  23.  
  24. if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<)
  25. {
  26. printf("bind fialed\n");
  27. exit();
  28. }
  29. if(listen(listenfd,SOMAXCONN)<)
  30. {
  31. printf("listen failed\n");
  32. exit();
  33. }
  34. struct sockaddr_in peeraddr;
  35. socklen_t peerlen = sizeof(peeraddr);
  36. int conn;
  37. if((conn=accept(listenfd,(struct sockaddr*)&peeraddr,&peerlen))<)
  38. {
  39. printf("accept failed\n");
  40. exit();
  41.  
  42. }
  43. printf("ip=%s, port=%d\n",inet_ntoa(peeraddr.sin_addr),ntohs(peeraddr.sin_port
  44. ));
  45. char recvbuf[];
  46. while()
  47. {
  48. memset(recvbuf,,sizeof(recvbuf));
  49. int ret = read(conn,recvbuf,sizeof(recvbuf));
  50. fputs(recvbuf,stdout);
  51. write(conn,recvbuf,ret);
  52. }
  53.  
  54. close(conn);
  55. close(listenfd);
  56. return ;
  57. }

client

  1. #include <stdio.h>
  2. #include <sys/types.h> /* See NOTES */
  3. #include <sys/socket.h>
  4. #include <unistd.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <arpa/inet.h>
  8. #include <string.h>
  9. #include <stdlib.h>
  10.  
  11. int main(void)
  12. {
  13. int sock;
  14. sock = socket(PF_INET,SOCK_STREAM,);
  15. if(sock < )
  16. {
  17. printf("creat socket failed\n");
  18. exit();
  19. }
  20. struct sockaddr_in servaddr;
  21. memset(&servaddr,,sizeof(servaddr));
  22. servaddr.sin_family = AF_INET;
  23. servaddr.sin_port = htons();
  24. //servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//host any address
  25. servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
  26.  
  27. if(connect(sock,(struct sockaddr*)&servaddr,sizeof(servaddr))<)
  28. {
  29. printf("connect failed \n");
  30. exit();
  31. }
  32.  
  33. char sendbuf[] = {};
  34. char recvbuf[] = {};
  35. while(fgets(sendbuf,sizeof(sendbuf),stdin) != NULL)
  36. {
  37. write(sock,sendbuf,strlen(sendbuf));
  38. read(sock,recvbuf,sizeof(recvbuf));
  39.  
  40. fputs(recvbuf,stdout);
  41. memset(recvbuf,,sizeof(recvbuf));
  42. }
  43.  
  44. close(sock);
  45. return ;
  46. }

socket 映射服务器程序的更多相关文章

  1. socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)

    server #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket ...

  2. C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法

    C#调用接口注意要点   在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...

  3. 服务器程序DEBUG

    服务器程序DEBUG 服务器端设定 Tomcat 默认我们启动Tomcat是使用下边的命令 ./catalina.sh start 如果想DEBUG的话,只需要加一个参数打开JPDA(Java Pla ...

  4. 基于win32的socket编程及程序实现

    初步研究了win32平台的Windows Sockets,它是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用. ...

  5. Java实现Linux下服务器程序的双守护进程

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 现在的服务器端程序很多都是基于Java开发,针对于Java开发的Socket程序,这样的服务器端上线后出现问 ...

  6. UNIX网络编程---TCP客户/服务器程序示例(五)

    一.概述 客户从标准输入读入一行文本,并写给服务器 服务器从网络输入读入这行文本,并回射给客户 客户从网络输入读入这行回射文本,并显示在标准输出上 二.TCP回射服务器程序:main函数 这里给了函数 ...

  7. 服务器编程入门(5)Linux服务器程序规范

    问题聚焦:     除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范.     工欲善其事,必先利其器,这篇主要来探 ...

  8. 《用Java写一个通用的服务器程序》02 监听器

    在一个服务器程序中,监听器的作用类似于公司前台,起引导作用,因此监听器花在每个新连接上的时间应该尽可能短,这样才能保证最快响应. 回到编程本身来说: 1. 监听器最好由单独的线程运行 2. 监听器在接 ...

  9. Linux下select的用法--实现一个简单的回射服务器程序

    1.先看man手册 SYNOPSIS       /* According to POSIX.1-2001 */       #include <sys/select.h>       / ...

随机推荐

  1. 2018"百度之星"程序设计大赛 - 资格赛 A/B/E/F

    调查问卷  Accepts: 505  Submissions: 2436  Time Limit: 6500/6000 MS (Java/Others)  Memory Limit: 262144/ ...

  2. SpringBoot利用注解@Value获取properties属性为null

    参考:https://www.cnblogs.com/zacky31/p/8609990.html 今天在项目中想使用@Value来获取Springboot中properties中属性值. 场景:定义 ...

  3. 在ubuntu14中搭建邮箱服务器

    1.前提准备 1.1在服务器上安装ubuntu14 1.2为ubuntu14配置静态ip 使用命令 sudo vim /etc/network/interfaces打开配置文件 修改内容如下: 使用命 ...

  4. 一、I/O操作(缓存流,数据流,对象流)

    一.缓存流 以介质是硬盘为例子说明,字节流和字符流的缺点: 每次读写的时候,都会访问硬盘,如果读写频率比较高的时候,性能不佳.为了解决问题,采用缓存流. 缓存流在读取的时候,会一次性读较多的数据到缓存 ...

  5. Ubuntu云服务器下mysql授权远程登陆

    1)首先以 root 帐户登陆 MySQL(在授权之前要确保3306端口开放)2)创建远程登陆用户并授权 > grant all PRIVILEGES on discuz.* to zhan@' ...

  6. jquery ready&&load用法

    ready和load那一个先执行 DOM文档加载的步骤 (1) 解析HTML结构 (2) 加载外部脚本和样式表文件 (3) 解析并执行脚本代码 (4) 构造HTML DOM模型 //ready (5) ...

  7. 尚学堂java 答案解析 第六章

    本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.C 解析:对void下的函数,可以使用"return;"表示结束之意,但不能&q ...

  8. js 中class选择器,addClass,removeClass,hasClass,toggleClass,getByClass

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  9. node fs 解决回调地域问题

    promisify问题 promisify = require('util).promisify const read = promisify( fs.readFile); read('input.t ...

  10. SQL-27 给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。 提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)

    题目描述 给出每个员工每年薪水涨幅超过5000的员工编号emp_no.薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列. 提示:在s ...