Java 在客户端和服务器之间以字节数组的形式发送数据
我正在尝试在客户端和服务器之间发送加密数据。由于RSA加密,它采用字节数组形式。这意味着我必须改变发送数据的方式。我现在无法让它工作,我会留下我的方法(sendMessage),下面是处理消息发送的方法,如果有人能告诉我我做错了什么,那就太好了:)Java 在客户端和服务器之间以字节数组的形式发送数据,java,arrays,networking,encryption,Java,Arrays,Networking,Encryption,我正在尝试在客户端和服务器之间发送加密数据。由于RSA加密,它采用字节数组形式。这意味着我必须改变发送数据的方式。我现在无法让它工作,我会留下我的方法(sendMessage),下面是处理消息发送的方法,如果有人能告诉我我做错了什么,那就太好了:) 抱歉,应该澄清一下,本质上CSocket是我打开的一个套接字,我想通过该套接字发送消息。这段代码的问题是:OutputStream不能在我创建ByteArrayOutputStream对象f的行上转换为int,并且在out.write(msg)行上找
抱歉,应该澄清一下,本质上CSocket是我打开的一个套接字,我想通过该套接字发送消息。这段代码的问题是:
OutputStream不能在我创建ByteArrayOutputStream
对象f
的行上转换为int
,并且在out.write(msg)行上找不到合适的写入方法(byte[])
代码>谢谢您的澄清!请看
byte[]的ByteArrayOutputStream中的write方法还需要两个参数。类似以下的方法可能会起作用:
out.write(msg, 0, msg.length);
请告诉我这是否有用。我想我现在已经解决了问题。这可能不是最有效的方法,但本质上我对字节数组进行了编码,这意味着我不会丢失任何数据。这意味着我以这种编码格式发送它,然后在接收端我只是简单地解码它。用这种方式印刷的效果更好
OutputStream f = CSocket.getOutputStream();
out = new PrintWriter(f);
String encodedmsg = new String(msg, "ISO-8859-1"); // ISO-8859-1 is supposed to give every character a unique representation so I shouldent loose any data during encoding and decoding
out.write(encodedmsg);
你能描述一下你期望发生的事情和实际发生的事情吗?嗨,我在上面补充了一些细节。实际上,我调用此方法将字节数组msg发送到连接另一端的客户机/服务器。我希望字节数组会显示在另一台连接的机器上,但目前我得到了上面所述的错误。任何帮助都将非常感谢@KajHejerI我不知道你为什么要在这里处理ByteArrayOutputStream
,它没有做任何你想做的事情。只需使用正确的OutputStream
方法发送字节。干杯,伙计,这有点帮助,我仍然不知道如何格式化。写,但我正在处理:)ByteArrayOutputStream的构造函数只接受一个int参数。您可能是指ByteArrayOutputStream f=CSocket.getOutputStream()因此,我尝试通过tearrayoutputstream f=CSocket.getOutputStream()输入我还将out.write改为out.write(msg,0,msg.length)
。第一个更改的问题是,它声明输出流不能转换为字节输出流
,第二个问题是找不到合适的写入方法(byte[],int,int)
第二个错误我不理解,因为在文档中,它通常声明希望以该格式写入(字节[]b,int off,int len)
。为迄今为止的帮助干杯,伙计们,非常感谢:)这似乎有效ByteArrayOutputStream f=(ByteArrayOutputStream)CSocket.getOutputStream()代码>但我真的不知道这种格式能起到什么作用啊哈。*编辑-这肯定不起作用,我不知道我在想什么看到它走上正轨很好:)写方法在上次更改后现在也起作用了吗?还没有,我正在玩它,我不确定为什么它不喜欢你建议的格式。
OutputStream f = CSocket.getOutputStream();
out = new PrintWriter(f);
String encodedmsg = new String(msg, "ISO-8859-1"); // ISO-8859-1 is supposed to give every character a unique representation so I shouldent loose any data during encoding and decoding
out.write(encodedmsg);