Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在客户端和服务器之间以字节数组的形式发送数据_Java_Arrays_Networking_Encryption - Fatal编程技术网

Java 在客户端和服务器之间以字节数组的形式发送数据

Java 在客户端和服务器之间以字节数组的形式发送数据,java,arrays,networking,encryption,Java,Arrays,Networking,Encryption,我正在尝试在客户端和服务器之间发送加密数据。由于RSA加密,它采用字节数组形式。这意味着我必须改变发送数据的方式。我现在无法让它工作,我会留下我的方法(sendMessage),下面是处理消息发送的方法,如果有人能告诉我我做错了什么,那就太好了:) 抱歉,应该澄清一下,本质上CSocket是我打开的一个套接字,我想通过该套接字发送消息。这段代码的问题是:OutputStream不能在我创建ByteArrayOutputStream对象f的行上转换为int,并且在out.write(msg)行上找

我正在尝试在客户端和服务器之间发送加密数据。由于RSA加密,它采用字节数组形式。这意味着我必须改变发送数据的方式。我现在无法让它工作,我会留下我的方法(sendMessage),下面是处理消息发送的方法,如果有人能告诉我我做错了什么,那就太好了:)


抱歉,应该澄清一下,本质上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()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);