c#TcpListener在消息中接收奇怪的字符

时间:2017-09-22 08:06:29

标签: c# tcpclient tcplistener

我尝试使用TcpListener读取传入的消息。我建立了一个监听器,我收到了一条消息。但这个消息很奇怪。我得到了这个:

▬♥♥¡☺?♥♥YÄÂb­ #ù÷"MDòs←ç→.ge ûjò8┼#i(♥→å:À#À'<À%À)g@À   À‼/À♦À♫32À+À/oÀ-À1z¢À↕▬‼ÿ☺:▬¶↨↑↓▬¶♠♥♠☺♣♥♣☺♦♥♦☺♦☻☻♥☻☺☻☻

邮件是通过https从另一个应用程序发送的(我没有此应用程序的源代码)(https是否可能出现问题?)。无论如何,我设置的听众看起来像这样:

static void Main(string[] args)
{
    TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 11000);
    Console.WriteLine("Listening...");
    listener.Start();

    TcpClient client = listener.AcceptTcpClient();
    Console.WriteLine("Connection accepted.");

    Thread t = CreateThread(client, false);
    t.Start();
}

private static Thread CreateThread(TcpClient client)
{
    Thread t = new Thread(delegate ()
    {
        byte[] data = new byte[300];
        client.Client.Receive(data);
        Console.WriteLine("Received data: ");

        string value = Encoding.Default.GetString(data);
        Console.WriteLine(value);
    });

    return t;
}

该消息应该是有效的xml树。我使用的是C#和.NET framework 4.5.2。我究竟做错了什么?

2 个答案:

答案 0 :(得分:0)

正如评论所说,您似乎正试图在OSI模型上将数据提升到较低水平。您可以使用HttpClient从您正在收听的应用程序中获取数据,而不是使用TcpClient。

虽然它取决于您的服务器是什么以及如何处理请求。

var httpClient = new HttpClient();
var response = await httpClient.GetAsync(uri); 

另一种解决方案是在现有的TCP连接上使用StreamReader,下面的问题就是一个例子。虽然解决方案真的取决于你的服务器。

How reading messages from Server? (tcp)

答案 1 :(得分:0)

如果您正在调用使用soap / xml的Web服务,请使用Web服务客户端(向Visual Studio项目添加Web引用)

使用System.Net.Http.HttpClient或System.Net.WebClient从Web服务器下载xml文件。

不要尝试使用TCP客户端解码加密的网络流量。