服务器端

TServerSocket组件

≯℡__Kan透↙ 提交于 2019-12-06 12:15:05
主要作为服务器端的套接字管理器使用。它封装了服务器端的套接字。在打开套接字后,服务器端就处于监听状态,在接收到其它机器的连接请求后,与客户端建立连接,创建一个新的套接字,用于和客户端互传数据,此时TSERVERSOCKET组件则继续监听客户端连接。 属性: ACTIVE:设定TSERVERSOCKET是否处于打开,并处于监听状态 SERVERTYPE:按阻塞还是非阻塞模式工作 PORT:服务器的端口 SERVICE:服务器端提供的服务 SOCKET:连接所使用的SOCKET THREADCACHESIZE:允许客户连接的最大个数 方法: CREATE:创建一个TSERVERSOCKET对象 DESTROY:释放一个TSERVERSOCKET对象 OPEN:打开TSERVERSOCKET并开始监听 CLOSE:关闭TSERVERSOCKET,断开与客户端连接 事件: ONACCEPT:当有客户端请求连接时,被触发 ONCLIENTCONNECT:当有客户端的连接请求被接收且同客户端的连接建立时,被触发 ONCLIENTDISCONNECT:当有客户端的套接字被关闭时,被触发 ONCLIENTERROR:当与一个独立的客户端建立、使用、断开时出现错误时,被触发 ONCLIENTREAD:当服务器应该从某一个与客户端连接的套接字读取数据时,被触发 ONCLIENTWRITE

cookie和session的区别(转载)

别等时光非礼了梦想. 提交于 2019-12-06 10:27:26
前言 对cookie总是迷糊,搞不清楚, 1.什么是cookie? 2.什么是session? 一、什么是cookie cookie分为二种 1,以文件方式存在硬盘空间上的长期性的cookie 2,停留在浏览器所占内存中的临时性的cookie 浏览网站时,你会经常发现网站登录的地方,会有提示,问你是不是要记住自己的登录状态,像这种情况,登录时填写的一些信息会被以文件的方式存放在客户端的硬盘上。 当用户登录后,session会在cookie端产生一个session_id,这个session_id是存于浏览器所占用的内存当中。当你关闭浏览器后,session_id也要消失了。 cookie采用的是在客户端保持状态的方案,它是客户端的会话状态的一种储存机制。它是服务器在本地机器上存储的小段文本或者是内存中的一段数据 并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范。 网络服务器用HTTP头信息向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,或者本地内存中数据, 它会自动将同一服务器的任何请求缚上这些cookies,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制借助于cookie机制来达到保存标识的目的

Ajax

本秂侑毒 提交于 2019-12-06 07:49:14
概述 什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随 意做其他事情,不会被卡死 json有两种格式: 1) 对象格式: {"key1":obj,"key2":obj,"key3":obj...} 2) 数组 /集合格式:[obj,obj,obj...] Jquery的Ajax技术 1)$.get(url, [data], [callback], [type]) 2)$.post(url, [data], [callback], [type]) 其中: url:代表请求的服务器端地址 data:代表请求服务器端的数据(可以是key=value形式也可以是json格式) callback:表示服务器端成功响应所触发的函数(只有正常成功返回才执行) type:表示服务器端返回的数据类型(jquery会根据指定的类型自动类型转换) 常用的返回类型: text、json、html等 1)$.ajax( { option1:value1,option2:value2... } ); ---- 以后在掌握 常用的 option有如下: async:是否异步,默认是true代表异步 data:发送到服务器的参数,建议使用json格式 dataType

TCP客户端服务器编程模型

笑着哭i 提交于 2019-12-06 07:12:37
1.客户端调用序列 客户端编程序列如下: 调用socket函数创建套接字 调用connect连接服务器端 调用I/O函数(read/write)与服务器端通讯 调用close关闭套接字 2.服务器端调用序列 服务端的编程序列如下: 调用socket函数创建套接字 调用bind绑定本地地址和端口 调用listen启动监听 调用accept从已连接队列中提取客户端连接 调用I/O函数(read/write)与客户端通讯 调用close函数关闭套接字 3.常用函数 3.1.套接字与地址绑定函数 (1)绑定地址 #include <sys/socket.h> int bind(int sockfd, const struct sockaddr *addr, socklen_t len); 返回:成功返回0,出错返回-1 特殊bind地址介绍 一个主机可以有多个网络接口和多个IP地址,如果我们只关心某个地址的连接请求,我们可以指定一个具体的本地IP地址,如果要响应所有接口上的连接请求就要使用一个特殊的地址INADDR_ANY #define INADDR_ANY (uint32_t)0x00000000 监听所有服务器上IP得到的连接请求 struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr

NFS服务

谁说我不能喝 提交于 2019-12-06 05:43:16
NFS简介 NFS:Network File System网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol远程过程调用)实现 RPC采用C/S模式。客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 NFS优势:节省本地存储空间,将常用的数据如:home目录,存放在一台NFS服务器上且可以通过网络访问,那么本地终端将减少自身存储空间的使用。 RPC的主要功能就是在知道服务器端的每个NFS功能所对应的端口号,并且告诉客户端。让客户端可以连接到正确的服务器端口上去。那么RPC是如何知道每个NFS的端口号呢?这是因为当服务器在启动NFS时会随机使用多个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能。而RPC又是固定使用111端口来监听用户端的请求并回答客户端正确的NFS端口号。所以NFS服务器需要先启用RPC,然后再启动NFS。 NFS配置 1、部署环境 服务器端:CentOS7.7 192

http和https的区别

混江龙づ霸主 提交于 2019-12-06 04:59:26
本文链接:https://www.cnblogs.com/hello-web/p/10394178.html 一句话:HTTP+加密+认证+完整性保护=HTTPS 用https方式访问的前提是网站部署了SSL证书,如超真SSL、超安SSL等。 Https方式访问,客户端到服务器端传输的数据是加密的,即使被截获也没法破解,安全性很高;http方式访问,账户密码是明文传输的,极易泄露 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。 https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。 https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。 作者:法号桑菜 链接:https://www.zhihu.com/question

asp.net 的 web form 过时了吗

做~自己de王妃 提交于 2019-12-06 04:15:28
本文链接:https://blog.csdn.net/closurer/article/details/79526006 web form 其实是一个超前的设计。 每个厂商都希望服务器端和客户端采用同样的语言编程,这是为了商业利益考虑,如果能实现,对程序员来说,也是一个福音。 sun 在服务器端有 java,在客户端就做了 javascript,但据说 javascript 的设计者其实不太喜欢 java,所以它们只有名字是相似的。 微软在 asp 的时代,有一种叫 vbscript 的客户端脚本,如果页面只在 ie 上跑,其实有很好的编程体验,因为 asp 的服务器端代码,就是用 vb 写的。可惜的是,微软在浏览器并没有在桌面市场那种垄断的号召力,vbscript 并没有流行起来。 现在使用 javascript 的群体,也可以使用 node.js 在服务器端编程。 进入了 .net 时代,微软并没有放弃统一客户端和服务器端编程方式的努力,web form 就是一种尝试。它使得程序员可以完全忽略客户端,只使用 .net 家族的语言就可以进行 web 编程,客户端的 javascript,完全是在服务器端生成的。 web form 还有一个目标,就是统一 web form 和 win form 的编程体验,你可以看到 web form 的事件模型和 win form 非常的相似

Asp.net的WebForm的落后技术

送分小仙女□ 提交于 2019-12-06 04:14:13
本文链接:https://bbs.csdn.net/topics/392077893 因为webform确实,企图通过在html标签中的runat="server",在iis接受请求后,通过aspx页面引擎解析,想在服务器端,将所有标签构建成对象,各种Label对象,Button对象,然后还有一大堆属性Css,Style等等,包含一大堆本该服务器不应该关心的东西。 我认为只有对html页面进行数据填充的地方,才需要服务器端关心,其他地方都不是服务器端的责任,软件开发时,页面表现,前端工程师都写好了,不该是服务器关心的。 然后Webform为了干预这引擎生成的对象,以及深入的说干预最后生成的html页面(字符串)加了很多事件!这个就是页面生命周期,这个本来没什么问题。但是每次事件回传都要把这些事件执行一遍就有点问题了。 每次事件回传,都对页面重新生成,将客户端提交的form表单元素解析,然后还原html字符串中各个地方的值,这是是楼主说的框架设计的问题吧! 服务器控件的存在,页面生命周期的过长,这些与ajax确实是冲突的,如ViewState的完整性验证,不允许客户端修改服务器控件生成的内容,这个只能在服务器端对内容进行更改,这样就可ajax冲突了。比如: 刚开始用服务器控件做了个多级联动,然后如果在前端用ajax修改了控件生成的内容,再次提交到后台就会验证出错,不得不关闭安全验证。

安全类

半腔热情 提交于 2019-12-06 03:15:43
安全类 CSRF、XSS CSRF 基本概念和缩写: 跨站请求伪造 (Cross-site request forgery) 攻击原理:接口存在漏洞、确实登陆过。 防御措施:Token验证、Referer(页面来源)验证、隐藏令牌。 攻击原理:用户为网站A的注册用户,通过登录,在浏览器中存储cookie。用户访问B网站,下发页面中有指向网站A漏洞api的链接,引诱用户点击,浏览器自动上传cookie,网站A确认通过,造成CSRF攻击。 XSS 跨域脚本攻击 (cross-size scripting) 攻击原理(页面注入脚本,不需要登录)。 防御措施。 理解XSS的的攻击方式 反射型: 发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析XSS代码,整个过过程像一次反射,故叫反射型XSS。 存储型 存储型XSS赫恩反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。 掌握XSS的防御措施 编码 对用户输入的数据进行HTML Entity 编码 过滤 移除用户上传的DOM属性,如onerror等 移除用户上传的style节点、script节点、iframe节点等 校正 避免直接对HTML Entity解码 使用DOM Parse转换

一、I/O模型之BIO

让人想犯罪 __ 提交于 2019-12-06 00:55:08
I/O模型之BIO 基本介绍 Java BIO 就是传统的 Java IO 编程,其相关的类和接口再 java.io 包下 BIO(blocking I/O):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,但是如果新启动的这一个线程不做任何事情就会造成不必要的开销,可以通过线程池机制改善 BIO 模型适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发性能差,JDK1.4以前使用 BIO编程的流程 服务器端启动一个SeverSocket 客户端启动Socket对服务器端进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通讯 客户端发出请求后,先咨询服务器是否有线程响应,如果没有则会等待或者被拒绝 如果服务器有响应,客户端当前线程会等待请求结束后才继续执行 应用实例 实例说明 使用BIO模型编写一个服务器端,监听6666端口,当有客户连接时,就启动一个线程与之通讯 要求使用线程池机制改善,可以连接多个客户端 服务器端可以接收客户端发送的数据(使用telnet) 实例代码: public class BIOServer { public static void main(String[] args) throws Exception { //1、创建一个线程池 ExecutorService