服务器端

使用java实现一个hello/hi的简单的网络聊天程序

雨燕双飞 提交于 2019-12-09 22:52:09
1、socket原理      Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。 套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 1、服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 2、客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 3、连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 2、基于java中的socket编程   客户端: import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class client { public static void main(String args[])

输入URL按下enter键后发生的事

青春壹個敷衍的年華 提交于 2019-12-09 22:12:49
输入URL按下enter键后浏览器和服务器各自发生的事。 浏览器 1.用户在浏览器中输入URL地址 2.浏览器解析用户输入的URL地址=》域名+端口 3.浏览器检查本地缓存中是否存在这个域名=》IP 4.没有的话发起一个DNS系统调用=>IP(已经找到IP) 4.1 DNS系统调用 4.1.1 检查操作系统有没有这个域名 4.1.2 检查hosts文件中有没有这个域名 4.1.3 发起一个DNS调用直至找到这个域名=》IP 5.浏览器会通过本地一个随机创立的端口和服务器端指定端口之间进行一个连接 6.浏览器会把客户端的信息打一个包 7浏览器将这个包通过建立的连接通道发送到服务器 接下来服务器登场,服务器以apache服务器为例 1.打开客户端发送过来包,拿到里面的请求路径 2.根据里面的请求路径对应的拓展名找到文件的MIME TYTPE文件类型 3.判断文件类型是否是静态文件 4.如果是静态文件直接读取文件的内容 5.如果不是静态文件就判断什么程序可以处理这个类型的文件,交给程序进行处理,程序把处理结果返回服务器端 6.服务器端把文件打一个包 7.服务器端通过之前的连接通道把包发回给客户端 接下来又是浏览器对服务器端返回的数据包进行处理 8.打开服务器端返回来的包,找到Content-type 9.根据Content-Type判断处理响应内容的方式 10

影响ORACLE汉字显示的字符集问题

ぃ、小莉子 提交于 2019-12-09 19:26:32
在国内外大中型数据库管理系统中,把ORACLE作为数据库管理平台的用户比较多。ORACLE 不论是数据库管理能力还是安全性都是无可非议的,但是,它在汉字信息的显示方面着实给中国用户带来不少麻烦,笔者多年从事ORACLE数据库管理,经常收到周围用户和外地用户反映有关ORACLE数据库汉字显示问题的求援信,主要现象是把汉字显示为不可识别的乱码,造成原来大量信息无法使用。本文将就这一问题产生的原因和解决办法进行一些探讨,供存在这方面问题的用户朋友参考。 ---- 1、原因分析 ---- 通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定的。用于汉字显示的字符集主要有ZHS16CGB231280,US7ASCII,WE8ISO8859P1等。字符集不仅需在服务器端存在,而且客户端也必须有字符集注册。服务器端,字符集是在安装ORACLE时指定的,字符集登记信息存储在ORACLE数据库字典的V$NLS_PARAMETERS表中;客户端,字符集分两种情况,一种情况是sql*net 2.0以下版本,字符集是在windows的系统目录下的oracle.ini文件中登记的;另一种情况是sql*net 2.0以上(即32位)版本,字符集是在windows的系统注册表中登记的

CXF客户端调用

余生长醉 提交于 2019-12-09 14:11:37
CXF通过运行时代理生成远程服务的代理对象,在客户端完成对webservice的访问 package com.flyfox.client; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import com.flyfox.service.IHelloWorldService; public class HelloWorldServiceClient { public static void main(String[] args) throws Exception{ //调用WebService JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(IHelloWorldService.class); factory.setAddress("http://localhost:9000/helloWorld"); IHelloWorldService service =

JSP学习日志

倾然丶 夕夏残阳落幕 提交于 2019-12-09 12:33:29
三:JSP内置对象的常用方法 (1)request请求对象 request对象属于 Javax. ervlet ServletRequest接口的实例化对象。 【作用】 request对象不但可以用来设置和取得 request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、 cookies等。 【机制】当用户请求一个JSP页面时,JSP页面所在的 Tomcat服务器将用户的请求封装在内置对象 request中。 request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有参数列表 。 2)response响应对象 response对象属于Javax.servlethttpHttpservletrEsponse接口的实例化对象 【作用】 response对象用来给客户端传送输出信息、设置标头等。 【机制】 response对象的生命周期由JSP容器自动控制。当服务器向客户端传送数据JSP容器就会创建 response对象,并将请求信息包装到 response对象中。它封装了JSP性的响应,然后被发送到客户端以响应客户的请求,当JSP容器处理完请求后, response 对象就会被销毁。 1)页面跳转的多种方式: 2)response.sendRedirect(“地址”)实现页面跳转

《基于B/S模式的高校党务信息管理系统的设计与实现》论文笔记(十六)

只愿长相守 提交于 2019-12-08 18:15:28
一、基本信息: 标题: 基于B/S模式的高校党务信息管理系统的设计与实现 时间:2019 来源:知网 关键词:党务管理 二、阅读内容: B/S结构模式: B/S结构模式(浏览器服务器模式),该模式是技术兴起后的一种网络结构模式,浏览器是客户端的应用软件。该模式统一了客户端,将系统功能实现的核心部分转移到了服务器端,使系统的开发、维护和使用得到了简化。采用此架构的应用系统的优点是:维护和升级方便。当前,由于客户的需求不断变更,软件系统的改进和升级也越发频繁,架构的软件产品则体现着更为方便的特性。传统的或客户服务器模式)模式,如果要进行软件的维护和升级,系统管理员不仅要更新服务器端程序,还要更新客户端程序,并且客户端程序还可能因为操作系统的兼容性问题,出现安装不了或提交不了请求等各种各样的问题。如果是在一个有成百上千部电脑的单位,让系统管理员来回奔跑进行维护,这样的工作效率是可想而知的。而B/S架构的软件只需要维护好服务器就行了,客户端通过WEB浏览器访问服务器,不需要对客户端做任何维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;这种“瘦”客户端,“胖”服务器端的设计是将来信息化发展的主流方向。软件升级和维护会越来越容易,而使用起来会越来越简单,从而节省了人力、物力、时间和费用。 (2)成本降低,选择更多。基于B

linux svn服务器的搭建及配置

倾然丶 夕夏残阳落幕 提交于 2019-12-08 12:29:35
今天学习了一下svn服务器的搭建过程,在这记录如下: 检测svn是否安装: rpm -qa subversion #检查现有版本,如果输入命令后没有提示的话,表明没有安装 yum remove subversion #如果有安装,可以通过该命令卸载旧版本的svn服务 yum -y install subversion #执行安装 创建svn目录: mkdir /home/svn #以后新的svn仓库都在这个目录下创建 创建一个svn版本仓库: svnadmin create /home/svn/firstrepo #在/home/svn下创建一个firstrepo版本库,执行命令后可以查看到该目录 查看该版本库下生成的文件夹: 创建一个版本库时,目录下会有以下文件夹,如下图 其中conf目录是对该svn版本库配置的目录,接下来需要对目录下的文件进行配置。 每创建一个svn版本仓库都会有这些文件 conf目录下各文件的介绍及配置方法 passwd文件 : svn用户信息文件,保存所有该版本库的所有svn用户,可以编辑该文件添加用户。 使用:添加格式为 用户名 = 密码 ,比如 root = 123456 “ =” 两边都保留一个空格 在以后svn客户端检出或者更新的时候就可以使用这个文件里的用户名密码登录认证。 authz文件: 配置每个用户所在组,所在组的权限(读或写)

网络性能测试:iperf适用于linux以及windows

拜拜、爱过 提交于 2019-12-08 04:38:58
软件下载地址: http://sourceforge.net/projects/iperf Iperf使用方法与参数说明 PS:这个说明是转载。 参数说明: -s 以server模式启动。#iperf -s -c host以client模式启动。host是server端地址。#iperf -c serverip 通用参数: -f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,#iperf -c 222.35.11.23 -f K -i sec 以秒为单位显示报告间隔,#iperf -c 222.35.11.23 -i 2 -l 缓冲区大小,默认是8KB,#iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值 -o 将报告和错误信息输出到文件#iperf -c 222.35.11.23 -o ciperflog.txt -p 指定服务器端使用的端口或客户端所连接的端口#iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999 -u 使用udp协议 -w 指定TCP窗口大小,默认是8KB -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数) -C 兼容旧版本(当server端和client端版本不一样时使用) -M

python3 最简单的网络编程tcp

不想你离开。 提交于 2019-12-07 16:18:26
服务器端 # server_tcp.py import socket sk = socket.socket() # 创建socket对象 sk.bind(("192.168.36.106", 6666)) # 绑定IP和端口号 sk.listen() # 开启监听 print("开启监听!") conn, address = sk.accept() # 等待客户端连接 阻塞 print("客户端连接成功!") while 1: # 开始和客户端聊天,以下程序是服务端先发送消息 conn.send(input(">>>:").strip().encode("utf-8")) msg = conn.recv(1024) # 阻塞 print(f"来自客户端的消息:{msg.decode('utf-8')}") if msg.decode("utf-8").upper() == "BYE": break conn.close() sk.close() 客户端 # client_tcp.py import socket sk = socket.socket() # 创建socket对象 sk.connect(("192.168.36.106", 6666)) # 连接服务端 while 1: msg = sk.recv(1024) print("来自服务端的消息:", msg.decode

自己制作SSH客户端:二、叩响大门

大兔子大兔子 提交于 2019-12-07 10:18:52
现在基于上面制作的SocketClient可以进行各种Socket协议的收发操作。但是要注意,缓冲区大小有可能会造成的粘包问题。 我们开始连接服务器的ssh服务 ClientSocket client = new ClientSocket(socket); client.setClientListener(listener); client.start(); ssh = new SSH(client.getName()); 可以看到我们这里已经实现了一个ClientListener的接口回调,这里面会长期与服务器进行打交道。 static ClientListener listener = new ClientListener() { @Override public void onSendData(ClientSocket client, byte[] data) { System.out.println("发送数据"); } @Override public void onReceiveData(ClientSocket client, byte[] data) { System.out.println("收到数据:" + client.getName()); System.out.println("" + new String(data)); ClientSocket