`
isiqi
  • 浏览: 16540156 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C/S架构下的移动资费页面终结者—理想网关代理

阅读更多

大家看到这篇文章,我心情真的是很沉重的。为什么?那我告诉你,我现在写的是第二遍~刚才准备提交的时候不小心按到什么。。。没啦!5555。。。写了1个小时诶~

最近手头有一个C/S架构项目,完成了HTTP跟SOCKET两种方式的连接,在进行CMNET测试都已经通过,但是在进行CMWAP就没这么顺利了!原先我们做的都是对content-type进行判断。但是自从资费页面又改了,这个方法我就再也没有成功过!因为程序在哪里死循环住了!想想这样被移动牵着鼻子走也不是个事,干脆自定义数据标识头,也不要去搭理text/vnd.wap.wml是什么!接下来我贴一下关键代码:

客户端:

//cRef是自定义一个数据标识头,就是我们的关键,这个需双方协议定义好!这里我暂且为4,3,2,1.实际项目大家可复杂些为好!

byte[] cRef=new byte[4];
String url="http://125.120.160.11:8080";

//第一次发起连接

try {

conn = (HttpConnection) Connector.open("http://10.0.0.172"+"/WebModule1/uisevlet", 3,true);
conn.setRequestProperty("X-Online-Host", url);

conn.setRequestMethod (HttpConnection.POST);

conn.setRequestProperty ("Accept","*/*");

conn.setRequestProperty ("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");

conn.setRequestProperty("Content-Length", "");//无发送数据
conn.setRequestProperty ("Connection", "Keep-Alive");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {


dos=new DataOutputStream(conn.openOutputStream());
dis=new DataInputStream(conn.openInputStream());

//读取标识数据
dis.read(cRef, 0, cRef.length);

//此处为了方便测试,把标示数据转换成字符串显示在paint中,供程序员查看是否正确

strTest=String.valueOf(cRef[0]);
strTest1=String.valueOf(cRef[1]);
strTest2=String.valueOf(cRef[2]);
strTest3=String.valueOf(cRef[3]);

//如果不是我们协议中规定的,那么再次连接
while(cRef[0]!=3&&cRef[1]!=2&&cRef[2]!=1&&cRef[3]!=0)

{

//这里是对上次的连接进行关闭与释放
dos.close();

dos=null;

conn.close();

conn=null;

//再次连接

conn = (HttpConnection) Connector.open("http://10.0.0.172"+"/WebModule1/uisevlet", 3,true);
conn.setRequestProperty("X-Online-Host", url);

conn.setRequestMethod (HttpConnection.POST);

conn.setRequestProperty ("Accept","*/*");

conn.setRequestProperty ("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");

conn.setRequestProperty("Content-Length", "");//请求无数据发送

conn.setRequestProperty ("Connection", "Keep-Alive");

//dos=new DataOutputStream(conn.openOutputStream());


dos=new DataOutputStream(conn.openOutputStream());
dis=new DataInputStream(conn.openInputStream());

//读取标识数据
dis.read(cRef, 0, cRef.length);
//此处为了方便测试,把标示数据转换成字符串显示在paint中,供程序员查看是否正确
strTest=String.valueOf(cRef[0]);
strTest1=String.valueOf(cRef[1]);
strTest2=String.valueOf(cRef[2]);
strTest3=String.valueOf(cRef[3]);
}

//连接成功
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();

}finally
{
try {if(dos!=null)
{


dos.close();
dos=null;
}
if(dis!=null)
{
dis.close();
dis=null;
}
if(conn!=null)
{
conn.close();
conn=null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

服务端代码:

服务端是servlet写的!

import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class UISevlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";

//Initialize global variables
public void init() throws ServletException {
}


//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
System.out.println("servlet启动");

//定义连接返回给客户端的标示数据
byte[] sSend=new byte[4];
//内容分别赋予4,3,2,1.这里只是简单设置,实际应用中为了数据安全可复杂些
for(int i=0;i<4;i++)
{
sSend[3-i]=(byte) i;
}

//建立输入输出流管道
ServletInputStream servletIn=request.getInputStream();
DataInputStream dis=new DataInputStream(servletIn);

ServletOutputStream servletOut=response.getOutputStream();
DataOutputStream dos=new DataOutputStream(servletOut);
response.setContentType("application/octet-stream");
//发送数据管道,servlet方式发送
/发送连接标示数据
dos.write(sSend);
dos.flush();
System.out.println("发送完毕");
System.out.println("is post");

}

//Clean up resources
public void destroy() {
}

}

新手之痛,我想每一个人多有过!我希望大家都有助人之心,这样我们的行业才会前进!才会扩大发展!没之前写的多!因为没思绪了!再此也谢谢曾今帮助过我的达人们!你们的回答没有白费,它已经促进了这个行业的进步!

分享到:
评论

相关推荐

    论文研究-基于顾客选择行为的移动资费套餐优化模型.pdf

    论文研究-基于顾客选择行为的移动资费套餐优化模型.pdf, 移动资费套餐是电信企业通过移动资费产品的多样化来满足市场中不同顾客需求的一种有效手段.在移动资费套餐的...

    移动代理服务器产品介绍

    移动代理服务器(MAS)是一种为企业或集团客户设计的通信解决方案,它主要由移动代理服务器、行业网关和移动终端三部分组成。上海移动推出的两类MAS业务分别是基础型和应用型,前者包括移动代理服务器,后者如手机...

    移动资费开发需求文档

    ### 移动资费开发需求文档知识点解析 #### 一、移动用户资费统计系统 ##### 1.1 概述 本系统旨在通过模拟移动运营商的资费统计逻辑,来帮助理解不同用户类型的计费规则及其优惠套餐的管理。 ##### 1.2 用户类型 -...

    中国移动技术部GPRS基础

    中国移动在部署GPRS时,对网络架构进行了扩展,增加了SGSN(Serving GPRS Support Node)和GGSN(Gateway GPRS Support Node)等核心网元。SGSN负责管理移动终端的移动性和安全性,而GGSN则作为移动网络与外部数据...

    电信资费页面NETCTOSS2.0

    在这个背景下,"电信资费页面NETCTOSS2.0前台页面"是指该系统用户界面的部分,它直接与用户交互,展示和处理关于资费的信息。 在学习JAVA的基础模板方面,NETCTOSS2.0前台页面的开发很可能采用了Java Web技术,如...

    Linux平台下计费网关的设计及实现.pdf

    【Linux平台下计费网关的设计及实现】 随着电信增值业务在中国的快速发展,移动运营商和服务提供商对于高效、灵活且成本合理的计费网关产品需求日益增长。现有的计费解决方案,如Cisco Mobil e Exchange和华为的...

    20210422-中国信通院-通信行业:中国宽带资费水平报告(2020年第四季度).pdf

    这份《中国宽带资费水平报告(2020年第四季度)》详细记录了中国固定宽带和移动通信业务的资费情况,并将中国的情况与世界上其他国家和地区进行了对比。报告由权威机构中国信息通信研究院发布,目的是为了全面掌握...

    移动用户资费统计系统

    移动用户资费统计系统是一个设计用于模拟移动运营商对用户资费计算的应用。在这个系统中,主要涉及两类用户:普通用户和VIP用户,每类用户有不同的资费标准和优惠套餐。 对于普通用户,基础资费是无月租费用,通话...

    中移动三大套餐资费管理培训专题(PDF 74页).pdf

    根据提供的文件内容,以下是对中移动三大套餐资费管理培训专题知识点的详细说明: 1. 市场环境变化 文档提到2009年前5个月的行业收入同比增幅为2.1%,为近年最低,说明行业增长速度放缓。同时,上半年国家公布经济...

    【移动互联网应用资费的可承受性】移动互联网套餐一览表.docx

    ### 移动互联网应用资费的可承受性分析 #### 一、移动互联网概述与重要性 移动互联网作为信息技术领域的重要突破,通过移动终端(如手机、笔记本电脑等)利用移动网络提供通信与互联网服务。它不仅扩展了虚拟与...

    移动资费计划项目方法论介绍.ppt

    移动资费计划项目方法论是电信运营商制定和优化服务价格策略的重要指导,它涉及市场调查、数据分析和决策制定等多个环节。以下是对该方法论的详细阐述: 首先,市场调查是项目启动的基础,主要包括定性和定量两种...

    中国联通3G移动业务资费体系和标准培训.ppt

    中国联通的3G移动业务资费体系是针对2009年4月推出的一套全国统一的计费标准,旨在提供多样化的服务选择和清晰的计费模式。这套体系包括3G语音业务、3G增值业务、3G国际业务以及相关的业务规范。 1. **3G语音业务...

    短信网关错误代码(联通,移动)

    ### 短信网关错误代码详解:联通与移动 在短信通信中,尤其是通过短信网关进行的大规模或自动化消息发送过程中,错误代码扮演着关键角色。它们帮助诊断问题,确保服务提供商和用户能够及时识别并解决通信障碍。本文...

    jsp程序设计电信资费管理

    在这个背景下,利用JSP(JavaServer Pages)进行电信资费管理系统的开发是一项常见的任务。JSP是一种动态网页技术,它结合了Java语言的强大力量与HTML的易用性,为构建高效、灵活且可扩展的Web应用提供了平台。 **...

    代理商移动的承诺书.doc.doc

    代理商移动的承诺书的主要职能是提供中国移动客户办理业务和体验服务,包括基本业务办理、国际漫游申请、跨区服务、签约客户密码重置、资费套餐变更、新业务、增值业务开通/取消、打印话单/详单、集团网成员申请/...

Global site tag (gtag.js) - Google Analytics