如何使用C#从套接字中检索Java数据?

时间:2009-05-20 14:51:01

标签: c# java .net

我想在socket中发送BigInteger数据,而我的朋友想要检索数据 我使用的是Java,但我的朋友使用的是C#。

String str = "Hello";
BigInteger big = new BigInteger(str.getBytes);
byteToBeSent[] = big.toByteArray();

我通过socket发送这个字节数组(byteToBeSent[])。我的朋友想要检索“你好”。

这怎么可能?

5 个答案:

答案 0 :(得分:3)

从Java发送,使用String.getBytes(encoding)发送您的字符串,并指定编码以匹配您的朋友将如何阅读它(例如UTF-8)。

这会将您的字符串转换为可在C#端进行翻译的字节流,因为您同意编码机制。

我不确定你的BigInteger机制在做什么,但我不相信它是可移植的,也不会处理相当大的字符串。

答案 1 :(得分:2)

老实说,你最好的选择是使用C#中的内置编码类。

string str = "Hello";
byte[] data = System.Text.Encoding.UTF8.GetBytes(str);

然后通过套接字发送。

答案 2 :(得分:1)

为什么使用BigInteger发送字符串数据?或者这只是一个例子?

如果要发送字符串数据,请使用String.getBytes(String encoding),发送结果并使用System.Text.Encoding对其进行解码。

答案 3 :(得分:0)

您需要获得custom BigInteger class for C#

但解析“Hello”作为一个大整数是不行的。我想发送文本,你最好使用Navaars方法。

答案 4 :(得分:0)

在C#端,您可以使用System.Text.Encoding.ASCII.GetString(bytesToConvert [])将接收到的字节数组转换回字符串。

我原以为这是将字符串转换为字节数组的某种Java习语。它确实正确地将字符串转换为ASCII字节,并且由于BigInteger长度是任意的,因此字符串的长度不应成为问题。