Java开发代理服务器
中国移动代理服务器MAS v2_0 DB接口插件开发手册

2
深圳市嘉讯软件有限公司
中国移动代理服务器 MAS V2.0 DB 接口插件开发手册
目录
1. 范围 ................................................................................................................................. 4 2. 文档概述 ......................................................................................................................... 4 3. 开发环境 ......................................................................................................................... 4 4. 集成环境 ......................................................................................................................... 4 5. 如何集成 ......................................................................................................................... 4 6. 插件注册 ......................................................................................................................... 5 7. 短信收发 ......................................................................................................................... 5 8. 彩信收发 ......................................................................................................................... 6 9. 发 WAPPush .................................................................................................................... 7 10. 定位 ................................................................................................................................. 8 11. 数据库表定义.................................................................................................................. 8 11.1. 短信数据库表结构 ................................................................................................ 8 11.1.1. 短信待发送表(SMS_OUTBOX) ..................................................................... 8 11.1.2. 短信已处理表(SMS_SENT) ................................................................................ 9 11.1.3. 上行短信表(SMS_INBOX) .................................................................................. 9 11.2. 彩信数据库表结构 .............................................................................................. 10 11.2.1. 彩信发送表(MMS_OUTBOX) ........................................................................... 10 11.2.2. 彩信已处理表(MMS_SENT)............................................................................. 11 11.2.3. 彩信接收表(MMS_INBOX) .............................................................................. 12 11.3. WAPPUSH 数据库表结构........................................................................................ 13 11.3.1. WAPPUSH 待发送表(WAPPUSH_OUTBOX) ................................................ 13 11.3.2. WAPPUSH 已处理表(WAPPUSH_SENT) ........................................................... 14 12. 标注解释 ....................................................................................................................... 16
Java与Restful Web Service、

P T和 D L T U E E E方 法 则相 对 较 少 使 用 。 Ret ]We e ie充 分 利 用 现 有 we su  ̄ 【 bSr c f v b基 础 设 施 . R S 系 统 中所 有 的 动 作 和访 问 的资 源 都 可 以从 HI P和 ET r T r U I中 得 到 .用 不 同 的 H T 请 求 方 法 来 处 理 对 资 源 的 R 1P r C U 创 建 、 取 、 新 和 删 除 ) 作 。而 且 响应 可 以被 标 R D( 读 更 操 示成可缓存的或是不可缓存 的, 从而使得代理服务器 、 缓存 服 务 器 和 网 关 很 好 地协 调工 作 . 高 了 网络 效 率 。 提
K ywo d : et et l bS rie jxWA e rsR s R sf e c ; a ; DL ; u We v A
1引言
近年 来 We b服务 领 域 发生 着 翻天 覆地 的 变化 。 传 统 继
的 XML R C风 格 的 We evc —P b S rie之 后 ,一 种 新 的 风 格 , R S E T被应 用 于 We e ie bS r c 。 v
关 键 词 : s; su e e , e A a ; A RetRet l bs ni ; jx W DL f w c
中图分 类号: P 1 T 31
文献标识码 : A
文章编号 :0 9 3 4 (0 72 — 0 8 一 3 1 0 — 0 42 0 )1 4 7 0 O
Re t l e r i n J v s f b Se vc i a a u W e
维普资讯
.
开 发 研 究 与 设 计 技 术
本 目 任 辑: 媛 栏 责 编 谢 媛
JAVA-用HttpClient来模拟浏览器GET,POST

一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。
所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。
目前我们使用的浏览器处理这些情况都不会构成问题。
不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网站来完成这个功能,这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。
如果对方仅仅是一个很简单的页面,那我们的程序会很简单,本文也就没有必要大张旗鼓的在这里浪费口舌。
但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。
我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。
为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的“顽固”!再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了!我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。
当然了,正如前面说到的,如果我们自己使用.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,目前的版本是2.0RC2。
秋叶整合包 环境变量

秋叶整合包环境变量秋叶整合包作为一款功能强大的编程工具,旨在帮助开发者更高效地完成各种编程任务。
它将多种编程语言和环境变量集成在一起,使得开发者可以轻松地在不同环境下进行开发。
本文将介绍秋叶整合包的环境变量设置方法,以及它如何在实际编程中发挥作用。
一、秋叶整合包简介秋叶整合包是一款集成了多种编程语言和工具的软件。
它支持多种编程语言,如Python、Java、C++等,同时还包括了数据库管理、网络编程、文件处理等实用工具。
通过秋叶整合包,开发者可以一站式解决编程过程中的各种问题,提高工作效率。
二、环境变量设置方法在秋叶整合包中设置环境变量,可以确保开发者在不同环境下保持编程的一致性。
以下是设置环境变量的方法:1.打开秋叶整合包,找到“配置”菜单。
2.在菜单中选择“环境变量”。
3.在环境变量设置页面,根据需要添加或修改变量。
4.保存设置并退出。
需要注意的是,环境变量的设置应根据实际项目需求进行,以确保编程过程中能够正确调用相关库和工具。
三、秋叶整合包与环境变量的关系秋叶整合包通过环境变量,实现了对各种编程语言和工具的调用。
在实际编程中,开发者可以根据需要设置不同的环境变量,以实现特定功能。
例如,在进行Python编程时,可以通过设置环境变量来调用相应的Python库;在进行Java编程时,可以设置JAVA_HOME环境变量来指定Java的安装路径。
四、实战应用案例及注意事项1.案例:在使用秋叶整合包进行Web开发时,需要设置正确的HTTP_PROXY环境变量,以确保代理服务器的正常工作。
2.注意事项:- 设置环境变量时,应注意变量名的规范,避免与现有环境变量冲突。
- 在实际项目中,根据需要合理设置环境变量,以免影响编程效果。
- 如有需要,可以查阅相关文档,了解环境变量的具体设置方法。
总之,秋叶整合包通过环境变量,为开发者提供了一个便捷的编程环境。
正确设置环境变量,可以提高编程效率,降低出错率。
Java_Service详解

Binder
Bider机制的组成 1. Binder驱动 /dev/binder 是Android内核的一个字符驱动设备,它是IPC的核心部分。客户端发送请 求最终就是通过它来传递到服务端,而服务端的返回结果也是通过它来传给客户端。内核 源码:binder.c 2. Service Manager 顾名思义,它是负责管理服务。服务端有服务的话就得向它注册,而客户端需要向它 查询、获得服务。 3. 提供服务的Server (Service) 提供服务的Server, 对普通的应用开发来讲,咱们用到的就是Service, 具体的工作 Android都帮忙做了封装,所以开发变得很容易。 4. 调用对象代理的Client (Activity) 普通的应用开发来讲就是 Activity 通过代理对象去请求调用服务,注意:这个过程是 同步的,所以如果估计这个服务调用很耗时,那么需要考虑启新线程来调用,而不能用UI 主线程。
3
Service的启动
Service有两种启动方式: 1.第一种是通过调用Context.startService()启动,调用Context.stopService()结束, startService()可以传递参数给Service。 2.第二种方式是通过调用Context.bindService()启动,调用Context.unbindservice()结束, 还可以通过ServiceConnection访问Service。 二者可以混合使用,比如说我可以先startService再bindService。
2
Service简介
服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用 程序进程的上下文(context)里面,这取决于自身的需要。其它的组件可以绑定到一个服 务(Service)上面,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务, 当用户退出媒体选择用户界面,仍然希望音乐依然可以继续播放,这时就是由服务 (service)来保证当用户界面关闭时音乐继续播放的。 它跟Activity的级别差不多,但是它不能自己运行,需要通过某一个Activity或者其他 Context对象来调用。
Java中的缓存技术

Java中的缓存技术缓存技术在软件开发中起着至关重要的作用。
它可以提高系统性能、降低对底层资源的访问频率,从而减轻服务器负载并改善用户体验。
在Java开发中,有许多可供选择的缓存技术。
本文将介绍几种常见的Java缓存技术,以及它们的应用场景和原理。
一、内存缓存内存缓存是最常见的缓存技术之一,它将数据保存在内存中,以提高读取速度。
在Java中,可以使用集合框架中的Map接口的实现类来实现内存缓存,如HashMap、ConcurrentHashMap等。
这些类提供了快速的Key-Value存储,通过Key快速查找对应的Value,以实现快速访问缓存数据。
内存缓存适用于数据读取频繁但不经常更新的场景,例如字典数据、配置信息等。
需要注意的是,内存缓存的容量是有限的,当缓存数据超过容量限制时,需要采取一些策略来处理,如LRU(最近最少使用)算法将最久未访问的数据移出缓存。
二、分布式缓存分布式缓存是一种将数据存储在多台服务器节点上的缓存技术。
Java中有多种分布式缓存框架可供选择,如Redis、Memcached等。
这些框架提供了高性能、可扩展的分布式缓存服务,可以在集群中存储大量的数据,并提供分布式缓存的管理和查询接口。
分布式缓存适用于需要同时服务大量客户端并具有高并发读写需求的场景,例如电商网站的商品信息、社交网络的用户数据等。
通过将数据存储在多台服务器上,可以提高系统的可用性和扩展性。
三、页面缓存页面缓存是将网页内容保存在缓存中,以减少对数据库或后端服务的访问频率,从而提高页面的加载速度。
在Java中,可以通过使用Web服务器或反向代理服务器的缓存功能,例如Nginx、Varnish等,来实现页面缓存。
页面缓存适用于内容相对静态或者不经常变化的场景,例如新闻网站的文章、博客网站的页面等。
通过将网页内容保存在缓存中,可以避免每次请求都重新生成页面,大大提高响应速度和系统的并发能力。
四、数据库缓存数据库缓存是将数据库查询结果保存在缓存中,以减少对数据库的频繁查询,提高系统的响应速度和并发能力。
resttemplate的代理功能解读
RestTemplate 是 Spring 提供的用于访问 REST 服务的模板类,它封装了 HTTP 请求的发送和响应的处理。
在使用 RestTemplate 时,我们经常会遇到需要对请求进行代理的情况。
本文将针对 RestTemplate 的代理功能进行解读,主要包括代理的作用、代理的配置和代理的使用方法。
一、代理的作用在实际项目开发中,很多情况下我们需要通过代理服务器访问外部资源,比如跨域访问、访问外网资源等。
这时候就需要使用代理服务器来转发请求,这就是代理的作用。
RestTemplate 的代理功能可以帮助我们实现通过代理服务器发送 HTTP 请求,从而实现访问外部资源的目的。
二、代理的配置在使用 RestTemplate 的代理功能之前,我们需要首先配置代理服务器的信息。
代理服务器的配置包括代理主机、代理端口、代理用户名和密码等信息。
具体的配置方法如下:1. 设置代理主机和代理端口可以通过系统属性来设置代理主机和代理端口,代码如下:```javaSystem.setProperty("网络协议.proxyHost", "代理主机");System.setProperty("网络协议.proxyPort", "代理端口"); System.setProperty("网络协议s.proxyHost", "代理主机"); System.setProperty("网络协议s.proxyPort", "代理端口");```其中,"代理主机" 和 "代理端口" 分别是代理服务器的主机名和端口号。
2. 设置代理用户名和密码如果代理服务器需要进行身份验证,还需要设置代理用户名和密码。
可以通过 Authenticator 类来设置代理用户名和密码,代码如下:```javaAuthenticator.setDefault(new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("用户名", "密码".toCharArray());}});```其中,"用户名" 和 "密码" 分别是代理服务器的身份验证信息。
移动代理服务器(MAS)
移动代理服务器业务介绍一、业务介绍移动代理服务器业务是中国移动上海公司面向集团客户市场推出的基础型MAS承载类业务,移动代理服务器业务分为本地业务和全网业务;其中本地业务和全网业务的具体差异如下:移动代理服务器本地业务移动代理服务器全网业务短信发送范围上海全网资费本地端口费为0 全网端口费:3000元/月受理流程直接分配本地服务代码预分配全网服务代码,需要有限公司审批并制作全网局数据二、移动代理服务器产品的组网结构移动代理服务器系统的组网结构主要由三部分组成,包括移动代理服务器、行业网关和移动终端。
网络结构如下图所示:其中:(一)移动代理服务器是指为满足信息化程度高的集团客户通过移动终端实现移动办公、生产控制、营销服务等信息化需求,在集团客户Intranet内部署与其OA、ERP、CRM等应用系统进行应用耦合的网关。
其功能特点如下:1.高效可靠的业务网关:软硬件一体的企业级网关,具备快速高效的业务处理能力;2.便捷的二次开发平台:提供统一的数据库接口、web service 接口,降低企业移动应用的开发成本;3.丰富的综合通信能力:支持短信、彩信、WAP等多种通信能力;4.完善的自服务功能:为客户提供内部业务管理、数据统计、用户权限控制等自服务功能。
(二)行业应用网关是专门为集团客户提供的综合业务解决方案的通信平台,在集团客户与终端客户之间搭建一条快速高效的业务处理通道。
功能特点如下:1.处理能力强:强大的业务实时处理能力,保证信息快速高效的传递;2.优先级支持:支持不同等级的优先级控制,实现业务的优质优价;3.安全性高:支持SSL加密,报障信息安全;4.多通信能力的支持:支持短信、彩信、USSD、WAP等业务的接入、存储、转发的功能;5.强大的业务管理能力:支持企业实名、黑白名单的控制、流量动态控制等功能。
(三)移动代理服务器和行业网关的连接方式移动代理服务器通过固定的公网IP与行业应用网关和MAS统一服务平台通信。
java 单点登录实现方案
java 单点登录实现方案Java单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户使用一组凭据(如用户名和密码)登录到多个相关的应用程序或系统,而无需在每个应用程序中单独进行身份验证。
本文将介绍Java单点登录的实现方案。
在实现Java单点登录时,可以采用以下方案:1. 基于Token的认证方案:这是目前较为常见的单点登录实现方案之一。
用户在登录成功后,后台生成一个Token,将其返回给用户,并存储在服务器端。
用户在访问其他应用程序时,将Token作为身份凭证发送到服务器端进行验证。
服务器端通过验证Token的有效性来判断用户的身份。
常见的Token生成方式包括JWT(JSON Web Token)和OAuth2.0。
2. 基于代理的认证方案:该方案使用一个代理服务器来处理用户的身份验证。
用户在登录成功后,代理服务器会为用户生成一个身份标识,并将其存储在Cookie中。
当用户访问其他应用程序时,请求会先发送到代理服务器,代理服务器会验证用户的身份,并将请求转发给相应的应用程序。
3. 基于Session的认证方案:该方案使用Java的Session机制来实现单点登录。
用户在登录成功后,后台会为用户创建一个Session,并将Session的ID存储在Cookie中。
当用户访问其他应用程序时,应用程序会通过Cookie中的Session ID来验证用户的身份。
无论采用哪种方案,Java单点登录的实现步骤大致相同:1. 用户登录:用户在登录页面输入用户名和密码进行登录。
后台验证用户的凭据是否正确,如果正确则进行下一步操作。
2. 生成身份凭证:在用户登录成功后,后台会生成一个身份凭证(Token、身份标识或Session),并将其返回给用户。
3. 存储身份凭证:服务器端会将生成的身份凭证存储起来,可以存储在数据库、缓存或服务器内存中。
4. 跨应用程序身份验证:当用户访问其他应用程序时,应用程序会验证用户的身份凭证的有效性。
移动代理服务器MAS(WebService)
IP地址为MAS服务器IP,API编码、用户名、密码为新增API接口中的接口编码、
登录用户和登录密码。数据库名称默认为mas,连接信息要与实现环境一致,否则
不能正常初始化。
在以上参数都填写完整后,那么请点击”init”按钮,出现初化成功后就可以正常
收发短信了。
webservice API接口初始化失败有哪些原因?
同的内容,只有循环调用sendsm方法来实现。
webservice API如何收发PDU短信?
首先:在MAS中新加了一个配置参数,具体如下:
usr/local/mas/WEB-INF/umaconfig.xml文件中增加PDU编码方式配置
参数<msgFmt_pdu></msgFmt_pdu>,此参数为字符串,每一种编码方
-5 数据库查询失败;
-6 参数错误;
-7 API编码非法;
-8 参数过长;
-9 没有初始化或初始化失败;
-10 API接接口处于暂停状态;
-11 短信网关未连接;
通过webservice API接口发送的短信在MAS的数据库中是否有发送记录?
在MAS数据库中不会保留通过API接口发送的记录 ,只保留了成功发送的短信。
编码; 15:含GB汉字)
客户在使用MAS1.2且客户需要使MAS跟他自己的PHP或jsp的网站相结合该建议 客户使用哪种语言的API接口?
请建议客户使用WEB SERVICE 接口
MAS1.2的WEB SERVICE如何部署服务端?
先将WEB SERVICE API包的bin目录下axis文件夹拷贝到MAS机器 tomcat
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010.9实用第一智慧密集电脑编程技巧与维护代理服务器的主要功能是代理网络用户取得网络信息,它是连接局域网和因特网的中转站。正是依靠代理服务器的工作,客户机才能正常地访问Internet。出于安全性和便利性等方面的原因,局域网程序要访问Internet,通常不能或者不方便直接连接Internet,而要先连接局域网中的某台代理服务器,将请求发给代理服务器,代理服务器收到局域网的请求后,会试图连接Internet上的相应的IP地址和端口,并将客户端请求数据发送到Internet上;如果In-ternet上有返回的数据,代理服务器再将数据返回给发出请求的局域网客户端。通过代理服务器转发客户端数据的功能,实现了局域网用户访问Internet的需求。一般Internet上常见的代理服务器是HTTP代理、Sock4代理、Sock5代理3种。大部分客户端程序都支持上述三种代理。HTTP代理一般用于浏览网页,同时也有可能用于其他操作。Sock4和Sock5代理统称为Socks代理,通常用于各种使用TCP/IP协议的程序。其中Sock4代理只支持TCP数据传送,Sock5代理支持TCP和UDP数据传送,同时还支持多种客户验证功能。不管哪种代理,都要通过一系列协商会话,确定局域网和因特网上的IP地址(域名)和端口号,并建立相应的套接字,以后的读写操作就和一般的套接字操作相一致。1常见代理1.1HTTP代理使用HTTP代理,局域网要访问Internet时,会和代理服务器的服务端口建立TCP连接,然后发出诸如GET、POST、CONNECT等请求命令,该命令中包含因特网上的IP地址(域名),有时还有端口号,如不特别指定端口号,则默认端口号为80。代理服务器从请求命令中取出要连接的IP地址和端口号,建立一个TCP套接字连接,把客户端的请求转发到Internet上,如从该套接字中读到Internet返回数据,代理服务器会通过客户端套接字把数据返回给客户端,以便客户端程序进行处理。GET命令用于从Internet上获取某个资源。POST命令用于向Internet提交客户数据。CONNECT命令用于与Internet上的某IP地址和端口号建立TCP连接。HTTP代理工作模式如下:
(1)客户端连接HTTP代理服务器服务端口。(2)客户端发送HTTP命令请求,其中包括域名(IP地址)、端口号等信息。(3)代理服务器根据客户端发来的命令,从中解析出要连接的IP地址(域名)、端口号,并建立因特网TCP套接字。(4)循环读出局域网套接字中数据,写入因特网套接字中。(5)循环读因特网套接字中数据,写入局域网套接字中。1.2Sock4代理
Sock4代理工作模式如下:
(1)客户端连接Sock4代理服务器的服务端口。(2)客户端发送命令41+目的端口号(2字节的16进制表示)+目的IP地址或域名(如字节4、5、6均为0,而字节7不为0,字节8为0,则表示其后是一个域名;否则其后4个字节是16进制表示的IP地址)。(3)代理服务器根据取出的IP地址(域名)、端口号建立因特网TCP套接字。(4)代理服务器向客户端返回应答00x5a+因特网套接字绑定的IP地址(只取前2字节)+因特网套接字绑定的端口号(2字节的16进制表示)。(5)循环读客户端套接字,读出数据写入因特网套接字。(6)循环读因特网套接字,读出数据写入客户端套接字。1.3Sock5代理
Sock5代理工作模式如下:
(1)客户端连接Sock5代理服务器服务端口。(2)客户端发送命令510,表示要进行SOCK5代理。(3)代理服务器返回应答50,表示可以进行代理。(4)客户端发送命令5101+目的地址(4字节的16进制表示)+目的端口(2字节16进制表示)。(5)代理服务器根据取出的IP地址、端口号建立因特网套接字。
Java开发代理服务器江洪
摘要:用Java语言成功开发了一个代理服务器程序。支持常见的HTTP代理和Sock4、Sock5代理,可以用于局域网中,通过代理服务器连接Internet,以实现常用的Internet操作。关键词:Java;代理服务器;HTTP代理;Sock4代理;Sock5代理
182010.9电脑编程技巧与维护
(6)代理服务器向客户端返回应答5001+因特网套接字绑定的IP地址(4字节的16进制表示)+因特网套接字绑定的端口号(2字节的16进制表示)。(7)循环读客户端套接字,读出数据写入因特网套接字。(8)循环读因特网套接字,读出数据写入客户端套接字。
2程序解析
主程序类proxy的main函数中有如下代码段,用于建立HTTP代理和Socks代理服务套接字:
try{ServerSockethttpserver=newServerSocket(httpport);//建立HTTP侦听套接字
System.out.println("HTTPProxystartedon"+httpserver.get-LocalPort());ServerSocketsocksserver=newServerSocket(socksport);//建立SOCKS侦听套接字
System.out.println("SOCKSProxystartedon"+socksserver.getLocalPort());httpdaemonhttpproxy=newhttpdaemon(httpserver);//建立
HTTP侦听线程
socksdaemonsocksproxy=newsocksdaemon(socksserver);//建立SOCKS侦听线程
}catch(IOExceptione){}httpdaemon和socksdaemon两个类用于处理HTTP代理和
SOCKS代理客户端连接请求,httpdaemon类实现代码如下:
//本线程类用于HTTP代理中,侦听客户端连接请求,并建立服务
//线程
classhttpdaemonextendsThread{privateServerSocketserver;publichttpdaemon(ServerSocket_server){server=_server;start();}publicvoidrun(){//线程运行函数
Socketconnection;while(true){try{connection=server.accept();HTTPServerThreadhandler=newHTTPServerThread(connection);}catch(Exceptione){}}}}sockdaemon代码类似于httpdaemon,实现代码如下:
//本线程类用于SOCKS代理中,侦听客户端连接请求,并建立服
//务线程
classsocksdaemonextendsThread{privateServerSocketserver;publicsocksdaemon(ServerSocket_server){
server=_server;start();}publicvoidrun(){//线程运行函数
Socketconnection;while(true){try{connection=server.accept();SOCKSServerThreadhandler=newSOCKSServer-Thread(connection);}catch(Exceptione){}}}}HTTPServerThread类用于HTTP代理中读客户端请求,并
发送给因特网,实现代码如下://本线程类用于HTTP代理中,从内网读数据,并发送给外网
classHTTPServerThreadextendsThread{privateSocketconnection;publicHTTPServerThread(Socket_connection){connection=_connection;start();}publicvoidrun(){//线程运行函数
bytebuf[]=newbyte[10000],buf1[]=newbyte[10000],buf2[]=newbyte[10000];intreadbytes=0,readbytes1=0;inti;Strings=null,s1=null,s2=null;Socketclient=null;intport=80;DataInputStreamin=null,in1=null;DataOutputStreamout=null,out1=null;intmethod=0;try{in=newDataInputStream(connection.getInputStream());out=newDataOutputStream(connection.getOutput-Stream());if(in!=null&&out!=null){readbytes=in.read(buf,0,10000);//从客户端读数据
if(readbytes>0){//读到数据
s=newString(buf);if(s.indexOf("\r\n")!=-1)s=s.substring(0,s.indexOf("\r\n"));if(s.indexOf("GET")!=-1)method=0;//如读到GET请求
if(s.indexOf("CONNECT")!=-1){//读到CONNECT请求,返回HTTP应答
s1=s.substring(s.indexOf("CONNECT")+8,s.indexOf("HTTP/"));s2=s1;s1=s1.substring(0,s1.indexOf(":"));s2=s2.substring(s2.indexOf(":")+1);s2=s2.substring(0,s2.indexOf(""));
PROGRAMLANGUAGE编程语言19