J2me网络编程——联网问题

问题描述

写了一个小Demo,实现点击确定联网后服务器返回相关信息的功能。但是很纠结,没错误却也不能联网。高手看下。究竟是哪的问题,请不吝赐教:publicclassgwymenuextendsFormimplementsCommandListener{//登陆privateTextFieldusertextbox;privateTextFieldpswdtextbox;HttpConnectionconn=null;InputStreamis=null;OutputStreamos=null;Stringurl="http://202.113.76.152/check.php";publicgwymenu(MIDletinstance,MyCanvascanvas){//加载背景try{topimage=Image.createImage("/top.png");btmimage=Image.createImage("/bottom.png");}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//加载顶色Mybgitemtopitem=newMybgitem(topimage,imag_W,imag_H);this.append(topitem);this.append(newSpacer(100,20));usertextbox=newTextField("用户名:","",15,TextField.ANY);this.append(usertextbox);this.append(newSpacer(100,10));pswdtextbox=newTextField("密码:","",15,TextField.PASSWORD);this.append(pswdtextbox);this.append(newSpacer(80,30));MyCustomItembtn=newMyCustomItem("登陆");this.append(btn);this.append(newSpacer(50,25));this.append(newChoiceGroup("",Choice.MULTIPLE,newString[]{"记住密码"},null));//加载底色Mybgitembtmitem=newMybgitem(btmimage,imag_W,imagbtm_H);this.append(btmitem);//增加按钮m_cmdBack=newCommand("返回",Command.BACK,1);m_cmdlogin=newCommand("确定",Command.OK,1);this.addCommand(m_cmdBack);this.addCommand(m_cmdlogin);this.setCommandListener(this);//设置焦点display.setCurrentItem(usertextbox);//显示Form屏幕display.setCurrent(this);}publicvoidcommandAction(Commandc,Displayabled){if(m_cmdBack==c){display.setCurrent(acanvas);}if(m_cmdlogin==c)/*点击确定接入网路,与服务器交互。*/{Stringname=usertextbox.getString().trim();Stringpassword=pswdtextbox.getString().trim();if(name.equals(""))return;byte[]temp=Loginfo2bytes(name,password);PostText(url,temp);GetText();//InfoFormiform=newInfoForm(display,this);//display.setCurrent(iform);}}/*转换对象数组为字节数组*/privatebyte[]Loginfo2bytes(Stringname,Stringpassword){//TODOAuto-generatedmethodstubbyte[]loginfo=null;//用于存放转换后的对象ByteArrayOutputStreambaos=newByteArrayOutputStream();//字节输出流DataOutputStreamdos=newDataOutputStream(baos);//数据输出流用于包装字节输出流try{dos.writeChars(name);dos.writeChars(password);loginfo=baos.toByteArray();//将写入的数据转换成字节数组dos.close();baos.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnloginfo;}publicvoidPostText(Stringurl2,finalbyte[]temp){//TODOAuto-generatedmethodstubnewThread(){publicvoidrun(){try{conn=(HttpConnection)Connector.open(url);conn.setRequestMethod(HttpConnection.POST);//发送信息os=conn.openOutputStream();for(inti=0;i<temp.length;i++){os.write(temp[i]);}os.flush();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}.start();}publicvoidGetText(){//一般来说,操作网络等有阻塞的动作最好是启动一个线程。newThread(){publicvoidrun(){try{conn=(HttpConnection)Connector.open(url);conn.setRequestMethod(HttpConnection.POST);//设置请求方法,如果不设置的话,则系统默认的请求就是GET请求intsCode=conn.getResponseCode();if(sCode==200){//返回200时处理is=conn.openDataInputStream();byte[]sRecvData=readDataFromStream(is,512);if(sRecvData!=null){}elseSystem.out.println("Logfailed");}}catch(Exceptionex1){ex1.printStackTrace();}finally{//一般来说,close数据,一般写在finally方法,这样可以保证到如果程序出现任何问题都可以关闭连接,防止连接泄漏try{is.close();conn.close();}catch(IOExceptionex){}}}}.start();}finalbyte[]readDataFromStream(InputStreamaIs,intaCache){//TODOAuto-generatedmethodstubbyte[]sData=null;ByteArrayOutputStreambos=newByteArrayOutputStream();try{byte[]sCaceh=newbyte[aCache];intpos=0;inthasRead=0;while((pos=aIs.read(sCaceh,0,aCache))!=-1){hasRead+=pos;bos.write(sCaceh,0,pos);}sData=bos.toByteArray();}catch(Exceptione){}returnsData;}}

解决方案

解决方案二:
Stringurl="http://202.113.76.152/check.php";为何自己不通过tomcat搞个localhost?或者你换一个靠谱点的http://baidu.com试试
解决方案三:
可以了,连服务器成功。

时间: 2024-09-20 00:01:36

J2me网络编程——联网问题的相关文章

J2ME网络编程以及网络游戏的实现

编程|网络 引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品和手持设备量身定制的Java专用版本. J2ME的出现使开发跨平台的消费类电子产品的应用软件成为可能.Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序.它提供了基于HTTP的高级Internet协议,使移动电话能以Clien

实例分析J2ME网络编程的两种方法

编程|网络 本文描述了在J2me中开发主要使用的网络连接方法,分别详细介绍了使用http和socket两种方法. HttpConnection 首先我们先来看一个简单的例子吧: 主要用到的java包: javax.microedition.io.*; public String requestGET(String URLString,String URL) throws IOException{ // ===============================================

J2ME网络编程两种方法的分析

本文描述了在J2me中开发主要使用的网络连接方法,分别详细介绍了使用http和socket两种方法. HttpConnection 首先我们先来看一个简单的例子吧: 主要用到的java包: javax.microedition.io.*; public String requestGET(String URLString,String URL) throws IOException{ // =====================================================

socket-unix网络编程环境怎么配置?我买了套接字联网api和tcp/ip详解,但是书上的代码都不能运行.

问题描述 unix网络编程环境怎么配置?我买了套接字联网api和tcp/ip详解,但是书上的代码都不能运行. 就下面这个代码,运行提示没有unp.h,找了个unp.h,但是还是提示什么各种数据类型重复定义.我到现在觉得是不是这本书写错了. #include "unp.h" int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.7 TIME_WAIT状态

2.7 TIME_WAIT状态 毫无疑问,TCP中有关网络编程最不容易理解的是它的TIME_WAIT状态.在图2-4中我们看到执行主动关闭的那端经历了这个状态.该端点停留在这个状态的持续时间是最长分节生命期(maximum segment lifetime,MSL)的两倍,有时候称之为2MSL. 任何TCP实现都必须为MSL选择一个值.RFC 1122[Braden 1989]的建议值是2分钟,不过源自Berkeley的实现传统上改用30秒这个值.这意味着TIME_WAIT状态的持续时间在1分钟

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.3 用户数据报协议(UDP)

2.3 用户数据报协议(UDP) UDP是一个简单的传输层协议,在RFC 768[Postel 1980]中有详细说明.应用进程往一个UDP套接字写入一个消息,该消息随后被封装(encapsulating)到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地.UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次. 我们使用UDP进行网络编程所遇到的问题是它缺乏可靠性.如果一个数据报到达了其最终目的地,但是

《UNIX网络编程 卷1:套接字联网API(第3版)》——1.3 协议无关性

1.3 协议无关性 图1-5中的程序是与IPv4协议相关的:我们分配并初始化一个sockaddr_in类型的结构,把该结构的协议族成员设置为AF_INET,并指定socket函数的第一个参数为AF_INET. 为了让图1-5中的程序能够在IPv6上运行,我们必须修改这段代码.图1-6所示的是一个能够在IPv6上运行的版本,其中改动之处用加粗的等宽字体突出显示. 我们只修改了程序的5行代码,得到的却是另一个与协议相关的程序:这回是与IPv6协议相关的.更好的做法是编写协议无关的程序.图11-11将

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.6 TCP连接的建立和终止

2.6 TCP连接的建立和终止 为帮助大家理解connect.accept和close这3个函数并使用netstat程序调试TCP应用,我们必须了解TCP连接如何建立和终止,并掌握TCP的状态转换图. 2.6.1 三路握手建立一个TCP连接时会发生下述情形. (1)服务器必须准备好接受外来的连接.这通常通过调用socket.bind和listen这3个函数来完成,我们称之为被动打开(passive open). (2)客户通过调用connect发起主动打开(active open).这导致客户T

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.14 小结

2.14 小结 UDP是一个简单.不可靠.无连接的协议,而TCP是一个复杂.可靠.面向连接的协议.SCTP组合了这两个协议的一些特性,并提供了TCP所不具备的额外特性.尽管绝大多数因特网应用(Web.Telnet.FTP和电子邮件)使用TCP,但这3个协议对传输层都是必要的.在22.4节中我们将阐述选用UDP替代TCP的理由.在23.12节中我们将阐述选用SCTP替代TCP的理由. TCP使用三路握手建立连接,使用四分组交换序列终止连接.当一个TCP连接被建立时,它从CLOSED状态转换到EST