`
wuhua
  • 浏览: 2109785 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

J2MESocket超时处理

    博客分类:
  • J2ME
阅读更多

在开发J2ME的时候需要用到Socket 所以研究了下超时的处理

 

在J2ME中基于UDP协议编程一文中介绍了如何使用Datagram和DatagramConnection来开发应用程序,本文将主要讲述在 MIDP2.0中使用ServerSocketConnection和SocketConnection来开发联网应用程序。TCP协议是可以保证传输的 质量的,这也是他和UDP的一大区别。由于以上谈到的四个类都属于GCF,他们在程序编写方面也非常相似,通常我们在Server端的某个端口监听,当客 户端连接服务器的时候,则可以得到一个SocketConnection的实例。通过两端的SocketConnection则可以实现C/S结构的通信 了。

首先看一下,ServerSocketConnection类,它的一个非常重要的方法就是acceptAndOpen()方法,这个方法返回一个SocketConnection实例,从而使得客户端和服务器端可以通过socket通信了。典型的代码如下:

// Create the server listening socket for port 1234

ServerSocketConnection scn = (ServerSocketConnection)

Connector.open("socket://:1234");

// Wait for a connection.

SocketConnection sc = (SocketConnection) scn.acceptAndOpen();

// Set application specific hints on the socket.

sc.setSocketOption(DELAY, 0);

sc.setSocketOption(LINGER, 0);

sc.setSocketOption(KEEPALIVE, 0);

sc.setSocketOption(RCVBUF, 128);

sc.setSocketOption(SNDBUF, 128);

// Get the input stream of the connection.

DataInputStream is = sc.openDataInputStream();

// Get the output stream of the connection.

DataOutputStream os = sc.openDataOutputStream();

// Read the input data.

String result = is.readUTF();

// Echo the data back to the sender.

os.writeUTF(result);

// Close everything.

is.close();

os.close();

sc.close();

scn.close();

..

SocketConnection的使用也是非常简单,通过Connector的open方法我们可以得到一个SocketConnection的实例。



SocketConnection sc = (SocketConnection)

Connector.open("socket://host.com:79");

sc.setSocketOption(SocketConnection.LINGER, 5);

InputStream is = sc.openInputStream();

OutputStream os = sc.openOutputStream();

os.write("\r\n".getBytes());

int ch = 0;

while(ch != -1) {

 ch = is.read();

}

is.close();

os.close();

sc.close();

其实我们在用socket编写程序的时候无非遵循这样的一种规则:服务器端建立监听端口等待连接,客户端通过open()方法与服务器端建立连接,两端通过建立的socket传输数据,关闭连接。

下图是我在运行WTK中NetworkDemo的时候的截图!代码也一并发表出来。

J2ME中使用Socket开发联网程序(1)(图一)

在 J2ME中基于UDP协议编程一文中介绍了如何使用Datagram和DatagramConnection来开发应用程序,本文将主要讲述在 MIDP2.0中使用ServerSocketConnection和SocketConnection来开发联网应用程序。TCP协议是可以保证传输的 质量的,这也是他和UDP的一大区别。由于以上谈到的四个类都属于GCF,他们在程序编写方面也非常相似,通常我们在Server端的某个端口监听,当客 户端连接服务器的时候,则可以得到一个SocketConnection的实例。通过两端的SocketConnection则可以实现C/S结构的通信 了。

首先看一下,ServerSocketConnection类,它的一个非常重要的方法就是acceptAndOpen()方法,这个方法返回一个SocketConnection实例,从而使得客户端和服务器端可以通过socket通信了。典型的代码如下:

// Create the server listening socket for port 1234

ServerSocketConnection scn = (ServerSocketConnection)

Connector.open("socket://:1234");

// Wait for a connection.

SocketConnection sc = (SocketConnection) scn.acceptAndOpen();

// Set application specific hints on the socket.

sc.setSocketOption(DELAY, 0);

sc.setSocketOption(LINGER, 0);

sc.setSocketOption(KEEPALIVE, 0);

sc.setSocketOption(RCVBUF, 128);

sc.setSocketOption(SNDBUF, 128);

// Get the input stream of the connection.

DataInputStream is = sc.openDataInputStream();

// Get the output stream of the connection.

DataOutputStream os = sc.openDataOutputStream();

// Read the input data.

String result = is.readUTF();

// Echo the data back to the sender.

os.writeUTF(result);

// Close everything.

is.close();

os.close();

sc.close();

scn.close();

..

SocketConnection的使用也是非常简单,通过Connector的open方法我们可以得到一个SocketConnection的实例。



SocketConnection sc = (SocketConnection)

Connector.open("socket://host.com:79");

sc.setSocketOption(SocketConnection.LINGER, 5);

InputStream is = sc.openInputStream();

OutputStream os = sc.openOutputStream();

os.write("\r\n".getBytes());

int ch = 0;

while(ch != -1) {

 ch = is.read();

}

is.close();

os.close();

sc.close();

其实我们在用socket编写程序的时候无非遵循这样的一种规则:服务器端建立监听端口等待连接,客户端通过open()方法与服务器端建立连接,两端通过建立的socket传输数据,关闭连接。

 

 

设置超时的时间

sc.setSocketOption(SocketConnection.LINGER, 5);

 

  • setSocketOption(<属性名>, int);

    <属性名>:

    • SocketConnection.DELAY:开启Nagle算法?(0/1)

    • SocketConnection.LINGER:服务器悬挂等待时间

    • SocketConnection.KEEPALIVE:

    • SocketConnection.RCVBUF:接收缓冲

    • SocketConnection.SNDBUF:发送缓冲

分享到:
评论

相关推荐

    Android超时处理

    在Android开发中,网络操作是应用与服务器交互的重要部分,涉及到的数据访问往往伴随着各种问题,如网络连接状态、接口返回状态、异常处理以及超时问题。"Android超时处理"这个话题聚焦于如何在Android应用中优雅地...

    Ajax请求session超时处理流程

    Ajax请求session超时处理流程 java服务器端处理: SessionValidateFilter中修改: if (ServerInfo.isAjax(request)) { request.setAttribute("statusCode", 301); request.setAttribute("message", "Session ...

    FTP超时处理.rar

    FTP超时处理.rar FTP超时处理.rar FTP超时处理.rar FTP超时处理.rar FTP超时处理.rar FTP超时处理.rar

    M3-USART1超时处理完美版

    2. **DMA(直接存储器访问)**:在高数据速率传输时,使用DMA可以减轻CPU负担,让DMA控制器直接处理数据传输。结合超时机制,即使在DMA传输中也可以检测到通信问题。 3. **HAL库**:STM32的HAL库提供了一套高级抽象...

    java 访问网络 下载文件 爬虫 超时处理解决方案

    在IT领域,尤其是在Java编程中,访问网络、下载文件、实现爬虫功能以及处理超时问题是非常关键的技术点。本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络...

    PHP超时处理全面总结.docx

    2. **PHP脚本超时处理** - `set_time_limit()`: 这个函数允许开发者在脚本运行期间动态设置最大执行时间,单位为秒。默认情况下,PHP脚本的执行时间限制为30秒,但可以通过`set_time_limit(0)`设置为无限,适用于...

    .net 等待超时处理的demo

    .NET框架中的等待超时处理是解决程序在执行过程中因长时间等待某一操作完成而可能导致阻塞或无响应的关键技术。在开发过程中,我们经常会遇到网络请求、数据库查询、锁的获取等可能产生延迟的操作,这时设置合适的...

    有超时检测的stm32的I2C驱动程序

    在I2C通信过程中,如果一个操作没有在预期的时间内完成,例如等待ACK信号未收到,超时检测机制会触发中断或错误处理,使得MCU能够采取相应措施,如重试传输、切换到备用设备或者停止通信,避免系统资源的无谓消耗。...

    java超时代码处理:以正则表达式设置超时时间为例

    java超时取消正则表达式匹配方法,代码超时处理,设置代码执行时间,超棒的工具类 lambda,Callable,ExecutorService,超过执行5秒退出

    易语言源码易语言FTP超时处理源码.rar

    易语言源码易语言FTP超时处理源码.rar 易语言源码易语言FTP超时处理源码.rar 易语言源码易语言FTP超时处理源码.rar 易语言源码易语言FTP超时处理源码.rar 易语言源码易语言FTP超时处理源码.rar 易语言源码...

    超时处理abc

    在IT行业中,超时处理是一项关键的技术,特别是在网络通信和服务器端编程中。当我们提到“超时处理abc”,这可能涉及到网络请求、数据传输或者任务执行的超时设定,以确保系统稳定性和资源的有效利用。在这个场景中...

    易语言FTP超时处理

    易语言FTP超时处理源码,FTP超时处理,demo,WorkerFunction,API_CreateThread,API_InternetOpen,API_WaitForSingleObject,API_GetLastError,API_InternetCloseHandle,API_GetExitCodeThread,API_CloseHandle,API_...

    C#超时方法 正则超时

    标题提到的"超时方法 正则超时"是关于如何在C#中处理正则表达式执行时间过长的问题。下面将详细介绍这一主题。 首先,`OutTimeClass.cs`可能包含了一个自定义的超时类,它可能提供了设置超时时间、执行任务以及在超...

    C#函数超时执行事例

    本示例将探讨如何在C#中实现函数的超时处理,特别是在WPF(Windows Presentation Foundation)应用程序中。下面我们将深入理解超时处理的概念,并通过一个实际的代码示例来展示如何实现这一功能。 超时处理是一种...

    Java实现任务超时处理方法

    Java实现任务超时处理方法 Java实现任务超时处理方法是指在Java中对超时任务的处理,主要有两种方式:基于异步任务结果的超时获取和使用延时任务来终止超时操作。 基于异步任务结果的超时获取是通过使用Future对象...

    C语言附带超时功能的system函数,liuux版本

    C语言附带超时功能的system函数,liuux版本 接口:int system_timeout(const char *cmdstring, int timeout)

Global site tag (gtag.js) - Google Analytics