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

javasocket超时编程

发布时间:2023-01-25 14:13: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写消息设置超时吗

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

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

3. java,socket连接如何设置超时

socket.setSoTimeout(int timeout);
恩。应该能实现你的要求

首先socket不是一个阻塞方法,它不会自动去连serverSocket,而是你connect一次它就去连一次,socket本身不存在什么连接server端超时,所以客户端的连接超时是由你的程序去控制的,比如用线程。

其次,恶意连接这个问题,其实我已经给你解决了,在server端拿到socket后,不就能用socket.setSoTimeout()来设置连接时间了么?

4. java socket 超时 异常 求解决 java.net.SocketTimeoutException: Read timed out

这个应该有配置超时的地方吧,你把超时时间配置的长一点,另外就是在你调用的地方记录日志观察你这个远程调用耗时到底是多少。

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

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

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

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

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

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

8. 如何用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();
}

9. Java:这两种设置Socket超时时间的方法有什么不同吗

connect timeout 是连接超时, 比如30秒内连接不上。
Socket timeout 是连接上以后,server没有回应的超时。

阅读全文

与javasocket超时编程相关的资料

热点内容
云服务器难玩吗 浏览:274
如何ping云端服务器 浏览:148
文件夹中能不能存放设备文件 浏览:3
继电器连接单片机 浏览:14
宁明天西到崇左源码 浏览:657
10g文件夹误删能恢复吗 浏览:132
dos命令服务启动 浏览:724
aws云服务器付费 浏览:171
水滴杆文件夹图片 浏览:26
java百战程序员25讲 浏览:383
java斑马 浏览:998
名片开发源码 浏览:333
如何买便宜的云服务器 浏览:774
linux的命令提示符 浏览:979
机器人焊接手柄编程入门教程 浏览:653
方舟怎么进入之前进去的服务器 浏览:810
家有萌宝解压 浏览:929
linuxc一站式学习pdf 浏览:20
奇思妙想pdf 浏览:992
租用裸金属服务器需要什么资质 浏览:636