Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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程序向.Net程序发送字符串_Java_C#_String_Gzipoutputstream - Fatal编程技术网

从Java程序向.Net程序发送字符串

从Java程序向.Net程序发送字符串,java,c#,string,gzipoutputstream,Java,C#,String,Gzipoutputstream,我需要从Java程序向.Net程序发送一个字符串 我想从Java中获取一个字符串,并使用GZIPOutputStream对其进行压缩,然后使用.Net中的System.IO.Compression.GZipStream对其进行解压缩 ByteArrayOutputStream out = new ByteArrayOutputStream(); try { GZIPOutputStream gzipOutputStream = ne

我需要从Java程序向.Net程序发送一个字符串

我想从Java中获取一个字符串,并使用GZIPOutputStream对其进行压缩,然后使用.Net中的System.IO.Compression.GZipStream对其进行解压缩

    ByteArrayOutputStream out = new ByteArrayOutputStream();
        try
        {
            GZIPOutputStream gzipOutputStream = new GZIPOutputStream(out);
            gzipOutputStream.write(text.getBytes("utf-8"));
        }
        catch (IOException e)
        {
            //Something
        }

    return out.toByteArray();
目前我有它,因此它从Java程序返回一个字节[]。但是有没有办法将byte[]转换成字符串并将字符串发送到.Net?并且能够在.Net中将字符串转换回byte[]以将其解压缩回字符串

我的选择是什么?我的主要目标是向.Net程序发送压缩字符串。这不可能吗


谢谢。

我想您可能要找的是命名管道。它们是专门为进程间通信而设计的

由于我不是Java方面的专家,这里有一个关于如何完成Java部分的示例:

作者(v01ver)还链接到他描述C#/.NET部分的地方

但是,他/她在他的C#示例中没有使用线程,应该注意,
pipeServer.WaitForConnection()方法阻止正在执行的线程

给出了一个关于如何将命名管道与线程一起使用的好例子(除了我将线程的
IsBackground
属性设置为true以防止应用程序在主线程关闭后在后台运行之外)

然后可以使用回调方法或事件来处理接收到的数据

如果需要使用gzip压缩,可以将
NamedPipeServerStream
包装在
GZipStream
中,并将其包装在
StreamWriter
StreamReader
中,如下所示:

        using (var pipeServer = new NamedPipeServerStream("pipename", PipeDirection.InOut))
        using (var gZipDecompressor = new GZipStream(pipeServer, CompressionMode.Decompress))
        using (var gZipCompressor = new GZipStream(pipeServer, CompressionMode.Compress))
        using (var reader = new StreamReader(gZipDecompressor))
        using (var writer = new StreamWriter(gZipCompressor))
        {
            // Use the writer and reader to write and receive strings
        }

C#将能够接受字节[],但首先您将如何发送它?Web API?应用到应用的消息?服务?“但是有没有一种方法可以将byte[]转换成字符串并将字符串发送到.Net?并且能够在.Net中将字符串转换回byte[]以将其解压回字符串?”您的方法是错误的:使用Java字符串,用支持良好的编码(比如UTF-8)将其序列化为
byte[]
,然后将这些字节发送到C#程序,并使用同样受支持的编码对其进行反序列化。如果要将其压缩发送,请使用众所周知的压缩方式,如gzip,并执行String>byte[]>gzip=>gunzip->byte[]->String。如果您还需要找到程序之间通信的方法,我建议使用内存映射文件。