问题标签 [objectinputstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ObjectInputStream.readObject() 在套接字通信过程中永远挂起
我在linux系统上遇到过socket通信的问题,通信过程如下:客户端发送消息请求服务器做计算任务,任务完成后等待服务器的结果消息。
但是如果任务花费了很长时间,比如大约 40 分钟,客户端会挂机等待结果消息,即使从服务器端,结果消息已经写入套接字以响应客户端,但它可以正常如果任务花费的时间很少,例如一分钟,则接收结果消息。此外,此问题仅发生在客户环境中,通信过程在我们的测试环境中表现正常。
我怀疑这个问题的原因是客户环境和测试环境之间socket的默认超时值不同,但是这两个环境的后续值是相同的,无论是客户端还是服务器。
客户端上的代码如下:
服务器上的代码就像,
为了解决这个问题,我添加了flush和reset方法,但是问题依然存在:
所以有谁知道我应该做些什么来解决这个问题。我猜是环境设置的原因,但不知道是什么环境因素会影响socket通信?
而socket使用Tcp/Ip协议进行通信,问题与任务时间长有关,那么tcp的哪些值会影响socket通信的超时呢?
在对日志进行分析之后,我发现在将消息写入套接字后,没有抛出/捕获异常。但总是在 15 分钟后,用于接受来自客户端的请求的服务器端的 objectInputStream.readObject() 代码片段中存在异常。但是socket.getSoTimeout的值是0,所以抛出了一个Timed out Exception就很奇怪了。
那么为什么会抛出 Connection Timed out 异常呢?
sockets - 什么原因:java.net.SocketException:连接超时,而不是 SocketTimeoutException
这个 SocketException 在 ObjectInputStream.readObject() 方法中抛出,是什么原因导致这个异常?另外,客户端和服务端socket的soTimeout的值都为0,KeepAlive的值为false。
从关于 setSoTimeout 方法的 JAVA API 文档中,如果该方法设置为非零值,则当时间到时,仅抛出 SocketTimeoutException,而不是 SocketException:Connection timed out,因此,此异常不应与 setSotimeoutMethod 相关.
但是PlainSocketImpl(here,is SSLSocketImpl).getTimeout()返回的值是通过setSoTimeout()方法传过来的,那么还是一个很奇怪的方法。
java - 将 Map 对象存储在另一个 Map 中
例如,我有这张地图:
比我提出一些价值观:
比我有这个类来序列化这个对象:
}
我这样做是因为我正在使用套接字,并且我想使用 ObjectInputStream 和 ObjectOutputStream 将映射对象从客户端传递到服务器。
现在我想问的是我是否可以将这个 Map 对象存储在服务器中,例如
是否可以将此对象存储在另一个地图中?
问候
android - 程序挂在 ObjectInputStream 的 readObject 方法上。
我想在建立连接后共享包含(字符串名称、地址、标题、...和字节 [] 图片)的 Stuff 类型的对象,之后我的代码挂在 objectinputstream readObject() 函数上。不发生流式传输。谁能弄清楚我在哪里做错了。
我的代码在这一点上挂起,永远不会前进。
android - 无法通过蓝牙 android 传输传输图像
我正在android上开发一个共享联系信息+图片的应用程序我有包含整个信息的类Stuff。
这是我通过套接字传输图像的线程
现在图像没有在第二台设备上传输,导致问题,甚至没有数据。问题出在哪里 。
android - Android ObjectInputStream(openFileInput) 总是抛出 IOException
我正在尝试从内部存储(文件)中读取,但是我遇到了问题。
我FileInputStream
使用FileInputStream fis = context.openFileInput(filename)
. 调用成功,没有失败。接下来我尝试ObjectInputStream
使用以下行创建一个对象ObjectInputStream ois = new ObjectInputStream(fis)
:
这每次都会抛出IOException
!我究竟做错了什么?
我试过使用fis
as aFileInputStream
和 as 一个InputStream
对象。我可以使用ObjectOutputStream
.
java - ObjectInputStream - 如何等待新数据?
我正在制作一个客户端-服务器应用程序,但在读取服务器上的对象时遇到了一些麻烦。
在我的服务器连接到客户端套接字后,我构建对象输入和输出流并将它们传递给我的service()
方法。在那里,我应该处理来自客户端的不同类型的消息。我可以从客户端(即Message
我的设计中的一个对象)那里得到一条消息就好了。但当然,我想做的是有一个循环,这样我就可以得到一条消息,处理它,然后回复。
到目前为止,我的代码只适用于一条消息。当我添加循环时,每次迭代都会发生什么,我的服务器只是一遍又一遍地读取相同的消息,然后我的客户端有机会通过套接字发送新消息(我认为这是正在发生的事情,至少) .
所以我真正需要做的是弄清楚如何让我的service()
方法等待新的输入。有任何想法吗?还是我接近这个错误?我是否需要在每次迭代中创建一个新的 OIS 或...?一些代码:
java - 通过套接字发送匿名类?(Java 中的对象..流)
所以现在,我有一台运行ObjectInputStream
and的服务器ObjectOutputStream
。
我遇到的问题是我有一个自定义(匿名)类,它扩展java.lang.Date
了我试图发送给客户端然后编译的。
所以我从来没有在客户端定义类,但我想以编程方式编译类。我尝试了许多不同的方法,但每次我都得到一个ClassNotFoundException
,因为该类最初不在客户端。
java - StrictMode 抱怨 InputStream 没有被关闭
我在 Android 中收到StrictMode报告的以下违规行为。
02-05 04:07:41.190:错误/严格模式(15093):在附加的堆栈跟踪中获取了资源,但从未释放。有关避免资源泄漏的信息,请参阅 java.io.Closeable。02-05 04:07:41.190:错误/严格模式(15093):java.lang.Throwable:未调用显式终止方法“关闭”
它在抱怨没有正确关闭流。但是,不应该关闭in
底层流吗?标记错误的原因可能是什么?
java - ObjectInputStream 适用于 MySql,但不适用于 sqlite
我使用此代码从 MySql 数据库中获取 Blob,它工作正常,当我将它用于 sqlite 数据库时,它会抛出 StreamCorruptedException
当我使用 SqlLite 数据库时:
java.io.StreamCorruptedException:无效的流标头:java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:797) 处的 java.io.ObjectInputStream.(ObjectInputStream.java:294) 处的 61742E75
为什么会有不同的行为?
这里我如何写入数据库:
附加信息 sqlite 驱动版本: