导航:首页 > 编程语言 > javasocket超时设置

javasocket超时设置

发布时间:2022-12-19 01:06:19

1. java socket 客户端设置未接收到数据的超时问题

建议如果是长时间没有收到数据的话,或者是不想长时间等待的话,都可以通过设置超时时间来进行断开连接,之后继续处理逻辑(设置socket的setSoTimeout方法实现即可,时间单位是毫秒):

packagesocket;
importjava.io.ByteArrayOutputStream;
importjava.io.InputStream;
importjava.net.InetSocketAddress;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.SocketAddress;
importjava.net.SocketException;
importjava.net.SocketTimeoutException;
importjava.text.SimpleDateFormat;
importjava.util.Arrays;
importjava.util.Date;
publicclassSocketService{
publicstaticvoidmain(String[]args){
try{
SocketAddressaddress=newInetSocketAddress("192.168.9.155",3000);
//启动监听端口8001
ServerSocketss=newServerSocket();
ss.bind(address);
//接收请求
Sockets=ss.accept();
newThread(newT(s)).start();
}catch(Exceptione){
e.printStackTrace();
}
}
}
classTimplementsRunnable{
publicvoidrun(){
try{
System.out.println(socket.toString());
socket.setKeepAlive(true);
socket.setSoTimeout(5*1000);
String_pattern="yyyy-MM-ddHH:mm:ss";
SimpleDateFormatformat=newSimpleDateFormat(_pattern);
while(true){
System.out.println("开始:"+format.format(newDate()));
try{
InputStreamips=socket.getInputStream();
ByteArrayOutputStreambops=newByteArrayOutputStream();
intdata=-1;
while((data=ips.read())!=-1){
System.out.println(data);
bops.write(data);
}
System.out.println(Arrays.toString(bops.toByteArray()));
}catch(SocketTimeoutExceptione){
e.printStackTrace();
}catch(SocketExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
Thread.sleep(1000);
System.out.println(socket.isBound());//是否邦定
System.out.println(socket.isClosed());//是否关闭
System.out.println(socket.isConnected());//是否连接
System.out.println(socket.isInputShutdown());//是否关闭输入流
System.out.println(socket.isOutputShutdown());//是否关闭输出流
System.out.println("结束:"+format.format(newDate()));
}
}catch(Exceptione){
e.printStackTrace();
}
}
privateSocketsocket=null;
publicT(Socketsocket){
this.socket=socket;
}
publicSocketgetSocket(){
returnsocket;
}
publicvoidsetSocket(Socketsocket){
this.socket=socket;
}
}

2. 在JAVA中,如何设定socket连接的时间超时时间等参数,

Socket类里有一个setTimeout()函数,可以设定socket上读请求的超时时间;还有在connect()函数中,可以在第二个参数中指定socket连接超时时间。具体可以看看API文档。

3. java如何设定socket等待连接时的超时时间

如果IP或端口填错了 就用socket 的 setSoTimeout(timeout);这个方法 这个是连接超时时间,单位是毫秒,就是在timeout/1000秒内如果没有完成TCP连接,就会触发超时异常。

4. 如何用java在socket上设置时间延迟

try {
//创建服务器套接字,于9999端口监听
ServerSocket server = new ServerSocket(9999);
//设置超时时间,以毫秒为单位,如果accept方法阻塞的时间超过设定的时间,
//将抛出SocketTimeoutException异常
server.setSoTimeout(10000);
//进行阻塞监听
Socket client = server.accept();
} catch (SocketTimeoutException e) {
System.out.println("连接超时");
}catch (Exception e) {
e.printStackTrace();
}

5. java socket通信如何设置连接时长

使用jdk中的setSoTimeout(inttimeout)方法,以毫秒为单位。

参考代码:

SocketAddressaddress=newInetSocketAddress("192.168.0.104",8888);
ServerSockets=newServerSocket();
s.bind(address);
Socketsocket=s.accept();
socket.setSoTimeout(5*1000);//5秒钟

将此选项设为非零的超时值时,在与此Socket关联的InputStream上调用read()将只阻塞此时间长度。

如果超过超时值,将引发java.net.SocketTimeoutException,虽然Socket仍旧有效。选项必须在进入阻塞操作前被启用才能生效。

另外:超时值必须是>0的数。超时值为0被解释为无穷大超时值。

6. 可以为Java Socket写消息设置超时吗

可以。
URLConnection里面有一个setConnectionTimeout(int timeout);

* @param timeout an {@code int} that specifies the connect
* timeout value in milliseconds

7. java socket怎么设置超时时间

socket.setSoTimeout(inttimeout);//timeout:超时时长,单位为秒

8. Java:设置Socket超时的setSoTimeout如何理解

您好,提问者:
setSotimeout(10000)是表示如果对方连接状态10秒没有收到数据的话强制断开客户端。
如果想要长连接的话,可以使用心跳包来通知服务器,也就是我没有发给你数据,但是我告诉你我还活着。

9. java socket里的time_wait状态怎么处理有什么有效的解决办法吗,谢谢!

TIME_WAIT这个状态是TCP/IP设计时为考虑网络的可靠性所必须的,主动发起关闭连接的一方在接收到被动关闭连接方发出的FIN后就会进入TIME_WAIT状态,这个状态最长会持续2*MSL(Max Segment Life)时间,其作用是(1)主动方发出的ACK可能会在网络中丢失,如果丢失被动方会重新发出FIN,如果提前关闭了连接就无法接收到重发的FIN。(2)使游荡在网络中的分组在经过2*MSL超时后消失。
TIME_WAIT这个设计是为了网络可靠性的考虑,具体设定时间长短需要根据网络情况决定,超时时间Windows默认设置一般为四分钟,也就是说主动方打开的端口最长在四分钟内不会被释放,导致可用端口减少。

TIME_WAIT的默认等待时间操作系统设置一般都较为保守,如果网络连接中出现大量TIME_WAIT状态,可以考虑修改设置(1)修改操作系统配置减少TIME_WAIT时间,Windows上的设置方法是进入注册表的HKLM->SYSTEM->CurrentControlSet->services->TcpIp->Parameters,添加一个DWORD项“TcpTimedWaitDelay”,时间可设置的短一些(比如60秒或30秒)(2)使用Socket提供的SO_LINGER选项,当SoLinger设置为0时Socket会取消关闭连接等待(不建议)。

阅读全文

与javasocket超时设置相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163