socket 映射服务器程序
server
- #include <stdio.h>
- #include <sys/types.h> /* See NOTES */
- #include <sys/socket.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <string.h>
- #include <stdlib.h>
- int listenfd;
- listenfd = socket(PF_INET,SOCK_STREAM,);
- if(listenfd < )
- {
- printf("creat socket failed\n");
- exit();
- }
- struct sockaddr_in servaddr;
- memset(&servaddr,,sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons();
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//host any address
- if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<)
- {
- printf("bind fialed\n");
- exit();
- }
- if(listen(listenfd,SOMAXCONN)<)
- {
- printf("listen failed\n");
- exit();
- }
- struct sockaddr_in peeraddr;
- socklen_t peerlen = sizeof(peeraddr);
- int conn;
- if((conn=accept(listenfd,(struct sockaddr*)&peeraddr,&peerlen))<)
- {
- printf("accept failed\n");
- exit();
- }
- printf("ip=%s, port=%d\n",inet_ntoa(peeraddr.sin_addr),ntohs(peeraddr.sin_port
- ));
- char recvbuf[];
- while()
- {
- memset(recvbuf,,sizeof(recvbuf));
- int ret = read(conn,recvbuf,sizeof(recvbuf));
- fputs(recvbuf,stdout);
- write(conn,recvbuf,ret);
- }
- close(conn);
- close(listenfd);
- return ;
- }
client
- #include <stdio.h>
- #include <sys/types.h> /* See NOTES */
- #include <sys/socket.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <string.h>
- #include <stdlib.h>
- int main(void)
- {
- int sock;
- sock = socket(PF_INET,SOCK_STREAM,);
- if(sock < )
- {
- printf("creat socket failed\n");
- exit();
- }
- struct sockaddr_in servaddr;
- memset(&servaddr,,sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons();
- //servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//host any address
- servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- if(connect(sock,(struct sockaddr*)&servaddr,sizeof(servaddr))<)
- {
- printf("connect failed \n");
- exit();
- }
- char sendbuf[] = {};
- char recvbuf[] = {};
- while(fgets(sendbuf,sizeof(sendbuf),stdin) != NULL)
- {
- write(sock,sendbuf,strlen(sendbuf));
- read(sock,recvbuf,sizeof(recvbuf));
- fputs(recvbuf,stdout);
- memset(recvbuf,,sizeof(recvbuf));
- }
- close(sock);
- return ;
- }
socket 映射服务器程序的更多相关文章
- socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)
server #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket ...
- C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法
C#调用接口注意要点 在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...
- 服务器程序DEBUG
服务器程序DEBUG 服务器端设定 Tomcat 默认我们启动Tomcat是使用下边的命令 ./catalina.sh start 如果想DEBUG的话,只需要加一个参数打开JPDA(Java Pla ...
- 基于win32的socket编程及程序实现
初步研究了win32平台的Windows Sockets,它是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用. ...
- Java实现Linux下服务器程序的双守护进程
作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 现在的服务器端程序很多都是基于Java开发,针对于Java开发的Socket程序,这样的服务器端上线后出现问 ...
- UNIX网络编程---TCP客户/服务器程序示例(五)
一.概述 客户从标准输入读入一行文本,并写给服务器 服务器从网络输入读入这行文本,并回射给客户 客户从网络输入读入这行回射文本,并显示在标准输出上 二.TCP回射服务器程序:main函数 这里给了函数 ...
- 服务器编程入门(5)Linux服务器程序规范
问题聚焦: 除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范. 工欲善其事,必先利其器,这篇主要来探 ...
- 《用Java写一个通用的服务器程序》02 监听器
在一个服务器程序中,监听器的作用类似于公司前台,起引导作用,因此监听器花在每个新连接上的时间应该尽可能短,这样才能保证最快响应. 回到编程本身来说: 1. 监听器最好由单独的线程运行 2. 监听器在接 ...
- Linux下select的用法--实现一个简单的回射服务器程序
1.先看man手册 SYNOPSIS /* According to POSIX.1-2001 */ #include <sys/select.h> / ...
随机推荐
- 2018"百度之星"程序设计大赛 - 资格赛 A/B/E/F
调查问卷 Accepts: 505 Submissions: 2436 Time Limit: 6500/6000 MS (Java/Others) Memory Limit: 262144/ ...
- SpringBoot利用注解@Value获取properties属性为null
参考:https://www.cnblogs.com/zacky31/p/8609990.html 今天在项目中想使用@Value来获取Springboot中properties中属性值. 场景:定义 ...
- 在ubuntu14中搭建邮箱服务器
1.前提准备 1.1在服务器上安装ubuntu14 1.2为ubuntu14配置静态ip 使用命令 sudo vim /etc/network/interfaces打开配置文件 修改内容如下: 使用命 ...
- 一、I/O操作(缓存流,数据流,对象流)
一.缓存流 以介质是硬盘为例子说明,字节流和字符流的缺点: 每次读写的时候,都会访问硬盘,如果读写频率比较高的时候,性能不佳.为了解决问题,采用缓存流. 缓存流在读取的时候,会一次性读较多的数据到缓存 ...
- Ubuntu云服务器下mysql授权远程登陆
1)首先以 root 帐户登陆 MySQL(在授权之前要确保3306端口开放)2)创建远程登陆用户并授权 > grant all PRIVILEGES on discuz.* to zhan@' ...
- jquery ready&&load用法
ready和load那一个先执行 DOM文档加载的步骤 (1) 解析HTML结构 (2) 加载外部脚本和样式表文件 (3) 解析并执行脚本代码 (4) 构造HTML DOM模型 //ready (5) ...
- 尚学堂java 答案解析 第六章
本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.C 解析:对void下的函数,可以使用"return;"表示结束之意,但不能&q ...
- js 中class选择器,addClass,removeClass,hasClass,toggleClass,getByClass
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- node fs 解决回调地域问题
promisify问题 promisify = require('util).promisify const read = promisify( fs.readFile); read('input.t ...
- 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 ...