gpt4 book ai didi

java - C# 服务器和 Java 客户端 TCP

转载 作者:行者123 更新时间:2023-12-02 10:47:24 24 4
gpt4 key购买 nike

问题是 GetBufferSize 方法,我发送缓冲区大小为 40,它返回一些奇怪的数字 54124。
为什么这个 java int 字节码与 C# int 字节码不同?

JAVA客户端

mBufferOut = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), UTF8)), true);

private void sendMessage(final String message) {

if (mBufferOut != null && message != null) {
try {
Log.d("_TAG", "Message length: " + Integer.toString(message.length()));

Log.d("_TAG", "Sending: " + message);
mBufferOut.print(message.length());
mBufferOut.flush();
mBufferOut.print(message);
mBufferOut.flush();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}

上面的代码发送两个消息:第一个是缓冲区大小,第二个是数据本身。

C# 服务器

private void Read() {
int size = GetBufferSize();

byte[] myReadBuffer = new byte[size];
int numberOfBytesRead = 0;
string str = "";

do
{
numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

str = Encoding.UTF8.GetString(myReadBuffer, 0, numberOfBytesRead);
} while (networkStream.DataAvailable);
}

private int GetBufferSize()
{
byte[] myReadBuffer = new byte[4];
int numberOfBytesRead = 0;

do
{
numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
} while (networkStream.DataAvailable);

if (numberOfBytesRead > 0)
{
return BitConverter.ToInt32(myReadBuffer, 0);
}
else
{
return 0;
}
}

有什么想法吗?

最佳答案

解决方案

         `return   Int32.Parse(Encoding.UTF8.GetString(myReadBuffer, 0, myReadBuffer.Length))`;

问题

public void print (int inum)

Prints the string representation of the specified integer to thetarget.

整数被转换为该 int 的字符串表示形式,然后转换为字节。

关于java - C# 服务器和 Java 客户端 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52452644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com