繁体   English   中英

Java Socket与C#TcpClient

[英]Java Socket vs. C# TcpClient

我正在将Java应用程序转换为C#,我有一个关于底层字节流的一般问题。

“字节”在C#中是无符号的,而不是在Java中签名。

这对我的代码部分做了什么,我在比较字节的等价性。 例如:

Java代码

public final static byte IAC = (byte)255;
...
void parseBuffer(byte[] bb, int len) {
    try {
        for(int i = 0;i < len; i++) {
            if(bb[i] == IAC)
                DoSomething();
        }
    }
}

我是否需要对IAC变量的声明做任何事情? 它会是其他任何东西(字节)255吗?

感谢您的帮助。

我是否需要对IAC变量的声明做任何事情?

不,这绝对没问题。 IAC的最终值为-1,但这很好,仍然代表一个设置了所有位的字节。 如果从C#端发送值为255的字节,它将在Java端正确拾取。

另一种替代方法是使用更大的数据类型(例如,为方便起见使用int ,并使用位掩码以[0,255]范围内的值结束:

public static final int IAC = 255;
...
void parseBuffer(byte[] bb, int len) {
    try {
        for(int i = 0; i < len; i++) {
            int value = bb[i] & 0xff; // To get a value in the range [0, 255]
            if (value == IAC) {
                DoSomething();
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM