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

a7qyws3x  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(414)

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

public void sendMessage(byte[] msg){ 
        if(msg.equals("null")){

        }        
        else{
            try{
            ByteArrayOutputStream f = new ByteArrayOutputStream(CSocket.getOutputStream());
            out = new PrintWriter(f);
            out.write(msg);
            countSend++;
            }catch (IOException e){
                System.out.println("ERROR");
            }
        }       

    }

对不起,我应该澄清一下,本质上csocket是一个我打开的套接字,我想通过这个套接字发送消息。我对这段代码的看法是: OutputStream can not be converted to int 在我创建 ByteArrayOutputStream 对象 f 以及 No suitable method found for write(byte[]) 在线上 out.write(msg);

qxsslcnc

qxsslcnc1#

我想我现在解决了我的问题。它可能不是最有效的方法,但本质上我编码的字节数组的格式,这意味着我不会失去任何数据。这意味着我以这种编码格式发送它,然后在接收端我只是简单地解码它。印刷作家这样做效果更好。

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);
rqcrx0a6

rqcrx0a62#

感谢您的澄清!请看https://docs.oracle.com/javase/10/docs/api/java/io/bytearrayoutputstream.html#write(字节%5b%5d,int,int)
byte[]的bytearrayoutputstream中的write方法还需要两个参数。类似以下的操作可能会起作用:

out.write(msg, 0, msg.length);

请告诉我这是否有用。

相关问题