服务器端开发

TCP socket编程

陌路散爱 提交于 2020-01-06 02:46:42
本文以windows socket 进行讲解, 开发环境VS2010,测试平台 windows 7 众所周知TCP(Transmission Control Protocol )是一种面向连接的、可靠的、基于字节流的通信协议。而开发TCP socket应用程序是一件比较简单的事情。下面就用一个比较简单的demo 讲解开发的过程。 该程序分为客户端和服务器端,客户端主要是向服务器端发送数据,服务器端主要是对于接收的数据进行显示。 TCP服务器端和客户端的主要流程: 服务器端:1 创建套接字 2 绑定 3 监听 4 接受连接 5 收发数据 6 关闭 客户端: 1 创建套接字 2 连接 3 收发数据 4 关闭 实现中用到的主要函数及 服务器: 1 WSAStartup() 2 socket() 3 bind() 4 listen() 5 accept() 6 recv() 7 closesocket() 8 WSACleanup() 客户端: 1 WSAStartup() 2 socket() 3 connect() 4 send() 5 closesocket() 6 WSACleanup() 下面是server 和 client 的实现代码,运行的时候首先启动server,然后再启动client, 则在server部分打印出“hello world” 。 Server.cpp 源码

Sencha Touch权威指南

限于喜欢 提交于 2020-01-05 04:13:26
《Sencha Touch权威指南》 基本信息 作者: 陆凌牛 [作译者介绍] 出版社:机械工业出版社 ISBN:9787111395010 上架时间:2012-8-22 出版日期:2012 年8月 开本:16开 页码:1 版次:1-1 所属分类: 计算机 > 软件与程序设计 > 网络编程 > javascript 计算机 > 软件与程序设计 > 网络编程 > HTML 更多关于》》》《 Sencha Touch权威指南 》 内容简介 书籍 计算机书籍   如何才能全面而透彻地理解和掌握移动应用开发框架sencha touch并开发出令人心动的移动应用?本书将给我们满意的答案!它的内容系统而全面,细致地讲解了sencha touch的所有功能、特性、使用方法、开发技巧,让我们能做到对sencha touch了如指掌;它实战性强,不仅每个知识点都配有精心设计的小案例(具体的实现步骤、完整的实现代码、最终的实现效果,图文并茂),而且还有综合性的案例,能让我们迅速获得实战经验。本书所有实例代码都经调试运行成功,我们可以对这些代码进行修改,以便观察各种不同效果,加深对实例代码的理解。   第一部分(第1~2章):首先介绍了sencha touch的功能和特性,然后介绍了如何搭建开发环境和发布应用程序,以及sencha touch的相关基础知识;第二部分(第3~15章):这是本书的核心部分

TCP和Http和Socket區別

回眸只為那壹抹淺笑 提交于 2020-01-02 20:42:08
Today,A colleague ask me a question about the different between Webservice and Socket. i am also a little excursive. I search a good article and i think it can resolve my confuse. i share it in here. 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。 1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态

REST In WCF4.0

雨燕双飞 提交于 2020-01-02 01:34:30
REST软件架构是由Roy Thomas Fielding博士2000年在他的论文《Architectural Styles and the Design of Network- based Software Architectures》首次提出的。他提出的理论对后来的Web技术的发展产生了巨大的影响,他是许多重要Web架构标准的设计者,这些标准就是HTTP、URI等。 1.1) Rest的英文全称是“Representational State Transfer”。中文翻译为“表述性状态转移”。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。 1.2)那么如何理解“Representational State Transfer”这句话呢?下面我们来解释一下: Representational :中文直译:代表的,表像的。如果把WEB 服务器端中所有的东西(数据)都看作是资源(Resource),那么呈现在用户面前(客户端)的就是资源的表像(Representation)。每一个资源都有自己的唯一标识(URI)。 State :中文直译:状态。首先这个状态是客户端的状态,而不是服务器端的状态(在REST 中,服务器端应该是无状态的)。那么,把State和Representation联系在一起(Representational State),可以理解成:每一个资源

【转】太厉害了,终于有人能把TCP/IP协议讲的明明白白了!

◇◆丶佛笑我妖孽 提交于 2020-01-01 02:09:35
【转】太厉害了,终于有人能把TCP/IP协议讲的明明白白了! 一、 计算机网络体系结构分层 二、 TCP/IP 基础 1. TCP/IP 的具体含义 2. 数据包 3. 数据处理流程 三、传输层中的 TCP 和 UDP 1. 端口号 2. UDP 3. TCP 四、网络层中的 IP 协议 1. IP 地址 2. 路由 3. IP 分包与组包 4. IPv6 5. IP 协议相关技术 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。 一图看完本文 一、 计算机网络体系结构分层 太厉害了,终于有人能把TCP/IP 协议讲的明明白白了 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议

Comet 和 WebSocket

…衆ロ難τιáo~ 提交于 2019-12-27 20:25:58
众所周知,HTTP 协议,是无状态的,所以不能保持持续的链接。数据交换是通过客户端提交一个 Request 到服务器端,然后服务器端返回一个 Response 到客户端来实现的。 轮询(polling) 一般情况下,通过浏览器访问一个网页,需要浏览器发送一个 HTTP Request,服务器接收到浏览器的请求,返回相应的消息。在一些数据更新比较频繁的应用里,页面的数据要想得到最新的结果需要重新刷新页面,但这样会产生大量的冗余数据在服务器和客户端传输。 可以看到,不论是javascript定时轮询,还是采用html的 http-equiv="refresh" 定时刷新页面,只要采用polling的方式,效率都是十分低下的,一方面,服务器端不是总有数据更新,所以每次问询不一定都有更新,效率低下;另一方面,当发起请求的客户端数量增加,服务器端的接受的请求数量会大量上升,无形中就增加了服务器的压力。 Comet Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流。 Comet这个单词,很多地方都会说到,它是“彗星”的意思,顾名思义,彗星有个长长的尾巴,以此来说明客户端发起的请求是长连接的。即用户发起请求后就挂起,等待服务器返回数据,在此期间不会断开连接。流方式和长轮询方式的区别就是:对于流方式

lnmp centos7 memcache服务器端 和 memcache memcached扩展的安装

无人久伴 提交于 2019-12-27 19:10:40
在项目开发的时候有用到memcache,自己在本地需要搭建一个memcache环境,用于开发和测试; wget http://www.memcached.org/files/memcached-1.5.10.tar.gz tar zxvf memcached-1.5.10.tar.gz ./configure --prefix=/usr/local/libevent make && make install ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent https://blog.csdn.net/happyrabbit456/article/details/44680597 https://blog.csdn.net/21aspnet/article/details/6827316 http://pecl.php.net/package/memcache https://launchpad.net/libmemcached/+download https://blog.csdn.net/u011547570/article/details/78325556 1.memcache服务器端的安装 学习源头:https://blog.csdn.net/21aspnet

react服务端渲染框架

六眼飞鱼酱① 提交于 2019-12-27 12:07:17
客户端渲染 加载一个空的html页面,然后请求一个打包的js文件,然后再客户端执行这个js文件 动态生成html内容然后插入到DOM元素上,在源代码查询中也只能看到空的html文档 没有任何其他内容 服务端渲染 加载出来的就带有完整的html文档内容(同时带有数据) 流程: 浏览器发送请求 --> 服务器端运行react代码生成页面 --> 服务器端返回渲染的页 客户端渲染:react代码在浏览器上执行,消耗的是用户浏览器的性能 服务端渲染:react代码在服务器上执行,消耗的是服务器端的性能 服务器端渲染好处:SEO(只识别 HTML 而不识别js里面的内容 )可以得到优化,首屏速度加快 虚拟DOM是真实DOM的一个js对象映射 虚拟DOM可以通过ReactDOM的render方法,转化为真实DOM挂载到页面的DOM节点上 也可以通过renderToString ,转化为一个字符串 js默认遵守commonjs规范 此时是没有办法运行的,因为不识别 jsx 的语法 yarn add webpack babel-core babel-loader webpack-cli webpack可以帮助我们打包客户端代码和服务端代码,但是需要加上 target: “node”参数 表示打包的是服务端代码 2者的区别 let path = require('path')

探讨webapp的SEO难题(上)

余生颓废 提交于 2019-12-26 00:21:22
前言 之前看了一篇文章:@ Charlie.Zheng Web系统开发构架再思考-前后端的完全分离 ,文中论述了为何要前后分离,站在前端的角度来看,是很有必要的;但是如何说服团队使用前端渲染方案却是一个现实问题,因为如果我是一个服务器端,我便会觉得不是很有必要,为什么要前后分离,前后分离后遗留了什么问题,如何解决,都得说清楚,这样才能说服团队使用前端渲染的方案,而最近我刚好遇到了框架选型的抉择。 来到新公司开始新项目了,需要做前端框架选型,因为之前内部同事采用的fis框架,而这边又是使用的php,这次也就直接采用fis基于php的解决方案: http://oak.baidu.com/fis-plus 说句实话,fis这套框架做的不错,但是如果使用php方案的话,我就需要蛋疼的在其中写smarty模板,然后完全按照规范走,虽然fis规范比较合理,也可以接受,但是稍微深入解后发现fis基于php的方案可以概括为(我们的框架用成这样,不特指fis): 服务器端渲染html全部图给浏览器,再加载前端js处理逻辑 显然,这个不是我要的,梦想中的工作方式是做到静态html化,静态html装载js,使用json进行业务数据通信,这就是一些朋友所谓的前端渲染了 JS渲染的鄙利 前端渲染会带来很多好处: ① 完全释放前端,运行不需要服务器; ② 服务器端只提供接口数据服务,业务逻辑全部在前端

JavaWeb学习总结(十三)——使用Session防止表单重复提交

丶灬走出姿态 提交于 2019-12-25 00:03:21
JavaWeb学习总结(十三)——使用Session防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。 一、表单重复提交的常见应用场景 有如下的form.jsp页面 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <!DOCTYPE HTML> 3 <html> 4 <head> 5 <title>Form表单</title> 6 </head> 7 8 <body> 9 <form action="${pageContext.request.contextPath}/servlet/DoFormServlet" method="post"> 10 用户名:<input type="text" name="username"> 11 <input type="submit" value="提交" id="submit"> 12 </form> 13 </body> 14 </html>   form表单提交到DoFormServlet进行处理 1 package xdp.gacl.session; 2 3 import java.io