java.net.SocketException:套接字写入期间的参数无效

时间:2015-07-01 13:20:26

标签: java sockets

我在aix上运行了一个java1.6网关应用程序。在白天成功传递了数百万条消息,但是当我查看日志时,我会看到下面的堆栈跟踪等日志。 LOG1:

java.net.SocketException: Invalid argument
    at java.io.DataOutputStream.write(DataOutputStream.java:119)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:921)
    at org.mule.providers.http.HttpServerConnection.writeResponse(HttpServerConnection.java:223)
    at com.ibtech.smg.esb.providers.esb.ESBHttpMessageReceiver$NewHttpWorker.run(ESBHttpMessageReceiver.java:162)
    at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)

的log 2:

java.net.SocketException: Invalid argument
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:125)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:171)
    at java.io.DataOutputStream.write(DataOutputStream.java:119)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234)
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:304)
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:308)
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:154)
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:288)
    at java.io.BufferedWriter.flush(BufferedWriter.java:266)
    at java.io.FilterWriter.flush(FilterWriter.java:112)
    at org.mule.providers.http.ResponseWriter.flush(ResponseWriter.java:75)

我已经搜索过互联网,但没有任何痕迹或案例似乎与我的相符。 我试图在我的开发环境中生成情况(在Windows上。)尝试过大消息,关闭套接字情况,0大小的消息,但没有运气。看不出同样的错误。有没有人知道为什么会出现这种错误?这是应用程序或操作系统错误中的错误?

1 个答案:

答案 0 :(得分:0)

当您尝试使用SocketOutputStream.write()编写大于64K的缓冲区时,会出现问题(java.net.SocketException:Invalid argument)。 当您使用SocketOutputStream.write()时,请使用SocketOutputStream.flush()清除SocketOutputStream

另一种情况是,连接已被服务器关闭。 (使用命令'netstat'检查连接状态,将是'CLOSE_WAIT') 当您使用SocketOutputStream.write()时,也请显示“java.net.SocketException:Invalid argument”。

REF_DOC