请大家看下面的代码:
len = is.read(gData);
这句代码会阻塞在这里,用了上面红色标出的代码后,能不能实现,超过5秒没反应后,read就不阻塞,而向下执行代码!
try
{
int len = 0;
sc = (SocketConnection) Connector.open("socket://100.42.25.3:885");
is = sc.openInputStream();
os = sc.openOutputStream();
sc.setSocketOption(SocketConnection.LINGER, 5);
pmm.gDataBuf = null;
sender = new Sender(os);
sender.send(pmm.gStringReq);
// Loop forever, receiving data
gData = new byte[pmm.BUF_LENGTH];
currentIndex = 0;
gBuf = new byte[50*1024];
while (!pmm.bStopConnect)
{
len = is.read(gData);
System.arraycopy(gData,0,gBuf,currentIndex,len);
currentIndex += len;
if(currentIndex > 300){
if(newVerifyXml()){
if((currentIndex%8) != 0){
int left = 8 - currentIndex%8;
byte[] byteTmp = new byte[left];
is.read(byteTmp);
}
opHandle();currentIndex=0;
}
}
}
stop();
} catch (ConnectionNotFoundException cnfe) {
Alert a = new Alert("错误", "无法连接服务器", null, AlertType.ERROR);
a.setTimeout(Alert.FOREVER);
display.setCurrent(a) ;
} catch (IOException ioe) {
if (!stop) {
ioe.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
实现不了吧, 你弄个timer吧。 超时就把所有object 设置为null
SocketConnection.DELAY:开启Nagle算法?(0/1)
SocketConnection.LINGER:服务器悬挂等待时间
SocketConnection.KEEPALIVE:长连接时间
SocketConnection.RCVBUF:接收缓冲
SocketConnection.SNDBUF:发送缓冲
不过虚拟机上可能支持的不好,或者不保证每次都准确
建议使用定时器
超时就把该关流,连接的全关了
再置null
分享到:
相关推荐
2. **配置服务器参数** - 通过注册表`HKEY_LOCAL_MACHINE\SOFTWARE\Borland\SocketServer`获取服务器配置信息。 - 设置是否只允许已注册的客户端连接(`SocketForm.RegisteredAction.Checked`)。 - 设置是否允许...
首先,让我们详细了解SocketConnection。这个接口主要用于客户端的Socket连接。通过Connector.open方法,我们可以创建一个到指定服务器的Socket连接。例如,`Connector.open("socket://localhost:9999")`会建立到...
以下是对这些运维经验的详细解读: 1. **集群规划与搭建**:Hadoop集群的规模和配置取决于业务需求。规划时需考虑硬件资源、网络拓扑以及扩展性。正确选择硬件(如磁盘类型、内存大小和CPU核心数)对性能至关重要。...
SocketConnection socketConnection = (SocketConnection) Connector.open("socket://" + serverAddress + ":" + port); ``` 2. **打开输入和输出流**: 下一步是获取Socket的输入流(InputStream)和输出流...
本文将详细介绍Kafka的参数配置,包括系统参数、Topic参数、ZooKeeper参数和日志参数。 系统参数 在Kafka集群中,每个 broker 节点都需要一个唯一的标识符,称为 broker.id。这个参数的值必须是一个正数。在这个...
本文将详细介绍一些常见的Socket错误代码及其含义,并给出相应的解决策略。 #### 一、基本概念与工具介绍 在Windows系统中,可以通过命令提示符下的`net helpmsg [错误代码]`来获取特定错误码的详细解释。例如,...
- **创建Socket**:通过调用`socket()`函数创建一个Socket,该函数需要三个参数:协议族、类型、协议。 ```c int sock = socket(AF_INET, SOCK_STREAM, 0); ``` - **绑定地址**:使用`bind()`函数将Socket与本地...
本文将详细介绍J2ME中的网络通信技术,特别是HTTP和Socket两种常用方法,并通过具体的示例代码帮助读者更好地理解和应用这些技术。 #### 二、HTTPConnection详解 HTTP (Hypertext Transfer Protocol) 是一种用于从...
**声明**:`amqp_connection_state_t amqp_new_connection(void);` 此函数用于创建一个新的RabbitMQ连接状态对象。它初始化了一个新的连接状态,并准备进行后续的连接操作。 #### 2. amqp_open_socket(获取socket)...
下面将详细介绍Python的多进程和Socket编程相关的知识。 首先,我们来了解Python的多进程编程。在Python中,`multiprocessing`模块提供了创建和管理进程的功能。它与`threading`模块类似,但进程之间拥有独立的内存...
应用程序可以根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源...
函数中首先调用了`soc_init_win32()`(可能是一个模拟器的特定初始化函数),然后创建了一个Socket,由`soc_create`函数实现,参数包括协议族(`SOC_PF_INET`表示IPv4)、套接字类型(`SOC_SOCK_STREAM`表示TCP连接...
创建Socket通常使用`socket`函数,参数指定协议族(AF_INET代表IPv4)、套接字类型(SOCK_STREAM代表TCP)和协议(IPPROTO_TCP)。 ```cpp SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if ...
下面将详细介绍一些常见的 SocketError 错误代码及其含义。 #### WSAEACCES (10013): Permission denied. - **含义**:当尝试使用一个未被授权的权限访问套接字时,会出现这个错误。比如,在没有通过 `setsockopt...
2. 配置ODBC数据源:使用`odbcinst.ini`和`odbc.ini`文件定义数据源,包括数据库驱动、连接参数等信息。 3. 安装数据库驱动:确保安装了与目标数据库系统兼容的ODBC驱动。 4. 测试连接:使用`isql`命令行工具测试...
- 定义了`Socket_Client`过程,接受主机地址、端口号和超时时间作为参数。 - 使用`socket-async`命令尝试异步连接指定的服务器。 - `fileevent`设置当Socket可写时触发的动作。 - 使用`vwait`等待连接成功或超时。 -...
本文将详细介绍Tomcat参数配置的方法和原理。 一、调整JVM内存位置 在Tomcat的bin目录下,有一个catalina.bat文件,该文件用于设置JVM的内存位置。通常情况下,JVM的内存位置设置为-server -Xms256m -Xmx1024m,这...
本篇将详细探讨“ABB_socket通讯”,特别是如何通过PC Interface选项进行配置,以及如何使机器人作为主服务器进行通讯。 首先,我们需要了解socket通讯的基本概念。Socket是一种网络编程接口,它允许两个或多个设备...
下面将详细介绍这些主题。 **1. Tomcat参数调优** Tomcat是广泛应用的Java Servlet容器,其性能直接影响到Web应用的响应速度。优化Tomcat参数主要包括以下几个方面: - **最大连接数**:`maxConnections`和`...
本篇文章将基于一个简单的Windows环境下C++ Socket编程实例,详细解析如何创建服务器端和客户端应用程序,并实现基本的数据收发功能。 #### 二、Socket编程基础 在深入了解示例代码之前,我们先来了解一下Socket...