我正在开发一个在服务器和客户端应用程序之间使用 java 套接字的应用程序。我需要通过这些套接字将大小为 64k 的文件从客户端发送到服务器。当我在本地运行所有系统(服务器和客户端)时,一切正常,但是当我在不同的机器上运行服务器和客户端时,它失败了。
我使用 JSON 来处理文件内容,所以服务器中抛出的异常是:“net.sf.json.util.JSONTokener.syntaxError”。然而问题不在于 JSON,而在于文件的大小。当我发送大小小于 8k 的文件时,一切正常,但更大的大小会截断发送的信息,因此当服务器尝试解释截断的接收信息时,它会抛出 JSONTokener.syntaxError。
我正在定义一个 64k 的套接字缓冲区,如下所示(我正在使用 NIO API):
SocketChannel sc;
private static final int BUFFER _SIZE = (int)Math.pow(2, 16);
.....
sc.socket().setReceiveBufferSize( BUFFER_SIZE );
sc.socket().setSendBufferSize( BUFFER_SIZE );
当我在远程模式下运行我的系统时,我需要做什么来扩大网络包的大小?你知道哪个是问题吗?非常感谢您提前。
奥斯卡