【发布时间】:2019-09-23 15:06:59
【问题描述】:
我有一个c# server。我需要将 Java 客户端连接到它,并使其交互。
以下是客户端 C# 代码:
string Host = "localhost";
int Port = 2000;
TcpClient Tcp = new TcpClient(Host, Port);
NetworkStream stream = Tcp.GetStream();
reader = new BinaryReader(stream);
writer = new BinaryWriter(stream);
writer.Write("Hello");
string str = reader.ReadString();
这段代码的 Java 等价物是什么?
我写了以下内容:
InetAddress ip = InetAddress.getByName("localhost");
int PORT_NO = 2000;
Socket socket = new Socket(ip, PORT_NO);
// obtaining input and out streams
DataInputStream reader = new DataInputStream(socket.getInputStream());
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
writer.writeChars("Hello");
String str = reader.readUTF();
但是,我的 java 代码不起作用。
服务器运行正常。服务器似乎没有收到 Java 客户端发送的字符串。
我该怎么做?
。
编辑:我根据@van dench的建议在C#服务器中使用了以下代码。现在,甚至 C# 客户端也停止工作了。
写...
byte[] strBytes = Encoding.UTF8.GetBytes(str);
byte[] lenBytes = BitConverter.GetBytes(strBytes.Length);
Array.Reverse(lenBytes);
writer.Write(lenBytes);
writer.Write(strBytes);
writer.Flush();
阅读...
byte[] lenBytes = reader.ReadBytes(4);
Array.Reverse(lenBytes);
int len = BitConverter.ToInt32(lenBytes, 0);
byte[] bytes = reader.ReadBytes(len);
string str = Encoding.UTF8.GetString(bytes);
【问题讨论】:
-
你遇到了什么问题?
-
@ChetanRanpariya,服务器似乎没有收到 Java 客户端发送的字符串。服务器运行正常。
-
Java 的 DataStream 类以扩展的 UTF 编码字符串。
标签: java c# tcpclient tcplistener