为什么我的 RMI 套接字只发送一个字节?
Why my RMI socket sends only one byte?
我正在做一个项目。我想加密 RMI 客户端和服务器之间的信息。我正在学习一些教程,例如 http://da2i.univ-lille1.fr/doc/j2sdk-1.4.2/guide/rmi/socketfactory/index.html。他们使用 XOR 方法加密。
一切顺利。我的意思是,信息加密和解密没有问题,但是当我用Wireshark捕获数据包时,它们的大小都是1字节。
我已经分析了 XorInputStream 和 XorOutputStream classes,改变了读写方法,但我一无所获。只有一个字节的数据包。
我认为这可能是 Socket 或 ServerSocket class 问题,关于套接字缓冲区大小 属性。
我想解决这个问题,因为应用程序使用一百个通信消息来发送几个字。
我尝试修改流中的写入方法 class 寻找缓冲过程,以突发方式发送 4 个字节:
byte buf[] = new byte[4];
int i=0;
public void write(int b) throws IOException {
if(i<=3){
buf[i]=(byte)((b ^ pattern) & 0xFF);
i++;
}
else{
for(int j=0;j<4;j++)
out.write(buf[j]);
i=0;
buf[i]=(byte)((b ^ pattern) & 0xFF);
i++;
}
}
但是我的程序只发送了几个字节就死机了。
这是我的完整项目:
https://mega.co.nz/#!pN0nUZTZ!G35QZxAgeZyzNg5Te8-ZlIjZmNK9wn8-0Cdj19nBOdY
如果有人知道这个问题,那将非常有帮助。
谢谢你
谢谢你!解决了。必须扩展 BufferedOutputStream 而不是 Filter at custom out/inputstream class
我正在做一个项目。我想加密 RMI 客户端和服务器之间的信息。我正在学习一些教程,例如 http://da2i.univ-lille1.fr/doc/j2sdk-1.4.2/guide/rmi/socketfactory/index.html。他们使用 XOR 方法加密。
一切顺利。我的意思是,信息加密和解密没有问题,但是当我用Wireshark捕获数据包时,它们的大小都是1字节。
我已经分析了 XorInputStream 和 XorOutputStream classes,改变了读写方法,但我一无所获。只有一个字节的数据包。
我认为这可能是 Socket 或 ServerSocket class 问题,关于套接字缓冲区大小 属性。
我想解决这个问题,因为应用程序使用一百个通信消息来发送几个字。
我尝试修改流中的写入方法 class 寻找缓冲过程,以突发方式发送 4 个字节:
byte buf[] = new byte[4];
int i=0;
public void write(int b) throws IOException {
if(i<=3){
buf[i]=(byte)((b ^ pattern) & 0xFF);
i++;
}
else{
for(int j=0;j<4;j++)
out.write(buf[j]);
i=0;
buf[i]=(byte)((b ^ pattern) & 0xFF);
i++;
}
}
但是我的程序只发送了几个字节就死机了。
这是我的完整项目:
https://mega.co.nz/#!pN0nUZTZ!G35QZxAgeZyzNg5Te8-ZlIjZmNK9wn8-0Cdj19nBOdY
如果有人知道这个问题,那将非常有帮助。
谢谢你
谢谢你!解决了。必须扩展 BufferedOutputStream 而不是 Filter at custom out/inputstream class