c# socket服务端c语言 socket客户端16进制格式数据c#接收到数据byte[] 我看了都没有问题,就是输出时候是乱码
data
{byte[1024]}
    [0]: 112
    [1]: 107
    [2]: 3
    [3]: 84
    [4]: 24
    [5]: 128
    [6]: 69
    [7]: 3
    [8]: 48
    [9]: 96
    [10]: 148
    [11]: 96
    [12]: 2
    [13]: 81
    [14]: 20
    [15]: 80
    [16]: 135
    [17]: 113
    [18]: 1
    [19]: 0
    [20]: 33
    [21]: 0
    [22]: 1
    [23]: 79
    [24]: 1
    [25]: 2
    [26]: 70
    [27]: 0
    [28]: 0
    [29]: 0以上我对照ascii是c语言传输过来的数据包 ,但是c# 输出过是乱码呀,,,怎么办?
编码我基本都试过了(如:UTF8 ....等等) 还是不行,,请高手指点迷津。先谢过了。

解决方案 »

  1.   

      Socket client = newsock.Accept();
                        IPEndPoint clientip = (IPEndPoint)client.RemoteEndPoint;
                        Console.WriteLine("connect with client:" + clientip.Address + " at port:" + clientip.Port);
                        while (true)
                        {
                            byte[] data = new byte[1024];
                            int len = 0;
                            len = client.Receive(data);
                            if (len < 1)
                                break;
    string Mgs = Encoding.UTF8.GetString(data,0,len);}
      

  2.   

    如果你的byte[]为中文汉字则需要知道byte[]之前是什么编码方式..一般来说是GB2312方式..
    Encoding.GetEncoding("GB2312").GetString
    或则 看看
    Encoding.Default.GetString();
    主要看你C那边是什么样的编码方式,你看如果只传数字的话是不是乱码呀。