当前位置:首页 » 编程语言 » java断开socket

java断开socket

发布时间: 2022-06-12 15:11:09

java 怎么处理socket断开'

您好,我来为您解答:
socket.close()
你可以把inputStream和outputStream设置为成员变量,然后写一个方法用来关闭流就好了,
又或者通过System.exit(0)关掉当前客户端线程。
当然,你也可以直接通过工具直接把客户端关了。
希望我的回答对你有帮助。

❷ Android Java socket运行就退出

非调试模式下打开应用。
使用socket在as3客户端和java服务器之间通信,发现某些情况下如果客户端长时间不与服务器进行通信(15-30min以上),再次进入由客户端向服务器发送消息,服务器无反应。过一会,连接断开。这种情况是在非调试模式下打开应用。

❸ java socket 判断是否断开了

首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。
然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。
最后又回到socket类,发现有一个方法sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的,太好了,正是我需要的!
于是,下面一段代码就可以判断远端是否断开了连接:
try{
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}
用ping实现
package com.csdn.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
static BufferedReader bufferedReader;
public static void main(String[] args) throws IOException {
try {
Process process = Runtime.getRuntime().exec("ping 192.168.1.104");//判断是否连接的IP;
bufferedReader = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String connectionStr = "";
while ((connectionStr = bufferedReader.readLine()) != null) {
System.out.println(connectionStr);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
bufferedReader.close();
}
}
}
ping的方法有个严重的BUG,就是你只能判断对方是否连接网络,而不能判断客户端是否开启...
我在写聊天室时经常要注意客户端异常退出的问题(比如客户直接调用任务管理器结束程序进程),
其实在通过socket.getoutstream和socket.getinputstream流对客户端发送、接受信息时如果socket没连接上是会抛出异常的,这也就是为什么Java会要求网络编程都要写在try里面,所以只要在catch里面写入客户端退出的处理就行了,没必要专门去想什么方法

❹ java socket服务器端断开问题,怎么解决

服务端应该是ServerSocket,然后等待客户端的连接,并开启新线程进行处理,在新线程中怎么出错都不用理,因为吧影响主线程等待新连接。

❺ Java Socket中服务器断开后,客户端为什么没有抛异常

在客户端退出之后,会出现socket连接中断,此时是会抛出异常,在抛出异常时打印中断的客户端即可。
1. while(Binput.read()!= -1) 这种方法能判断出客户端输入是否为空,客户端断开能跳出死循环,但是得到的数据却从第二个开始了,所以这方法不适宜。
2. 在死循环中加入以下代码:
try {
socket.sendUrgentData(0);
} catch (IOException e) {
done= false; //如果抛出了异常,那么就是断开连接了 跳出无限循环
}

❻ java socket编程 客户端怎么断开socket

你可以把inputStream和outputStream设置为成员变量,然后写一个方法用来关闭流就好了,
又或者通过System.exit(0)关掉当前客户端线程。
当然,你也可以直接通过工具直接把客户端关了。

❼ java中如果在关闭Socket时发生一个I/O错误,则会抛出一个什么异常

java关闭socket时发生错误,有可能抛出IOException异常,如果资源已经关闭了,没有做空值判断,则会出现空指针异常NullException。

如果是使用TCP协议通信,由TCP协议是面向连接。所以当客户端关闭后,由于没有预先告诉服务要销毁连接,客户端关闭时(客户与服务异常断开)服务端就会出现异常(空流情况)。这些都是在意料之内的。

(7)java断开socket扩展阅读:

JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可。

❽ java socket怎么断开连接

socket类,有一个senrgentdata方法,查看文档后得知它会往输出流发送一个字节的数据,只要对方socket的so_oobinline属性没有打开,就会自动舍弃这个字节,而so_oobinline属性默认情况下就是关闭的

❾ java如何关闭socket连接

所以要用长连接啊。客户端端口关闭后需要在close_wait状态等待1-2分钟才会彻底关闭,具体看操作系统的设置,一般默认2分钟。详细TCP状态转换可以参考TCP协议。
如果预期需要频繁传数据,就不要关闭端口,而是维持端口连接,每次都复用这个连接传。如果预期有几分钟以上不会用到连接再关闭。

❿ Java中socketioclient如何判断是网络断开还是人为断开

可以靠软件查询一下。
再ping一下DNS,能ping通的话整个网络就没问题了若DNS禁ping则用nslookup试试,若可以显示DNS地址及域名则证明网络可达,运行cmd,输入命令,ipconfigall,查看电脑ip的详细信息,输入命令ping检测网络协议,ping本机的ip,检测本地网卡。

热点内容
安卓手机设备连接在哪里 发布:2024-05-18 14:08:28 浏览:819
路由器的密码最多是多少位 发布:2024-05-18 13:58:18 浏览:419
扫描服务器名称如何填 发布:2024-05-18 13:36:29 浏览:114
芒果缓存的视频看不了视频怎么下载不了 发布:2024-05-18 13:35:14 浏览:519
c语言发短信 发布:2024-05-18 13:23:08 浏览:833
vb数据库程序 发布:2024-05-18 13:01:57 浏览:111
新建文件夹2免费手机 发布:2024-05-18 12:56:13 浏览:365
自己在家搭建服务器有水冷散热吗 发布:2024-05-18 12:47:27 浏览:649
旧版的安卓手机怎么使用微信 发布:2024-05-18 12:46:36 浏览:467
我的世界服务器开多久 发布:2024-05-18 12:45:32 浏览:593