我尝试使用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。我究竟做错了什么?
答案 0 :(得分:0)
正如评论所说,您似乎正试图在OSI模型上将数据提升到较低水平。您可以使用HttpClient从您正在收听的应用程序中获取数据,而不是使用TcpClient。
虽然它取决于您的服务器是什么以及如何处理请求。
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(uri);
另一种解决方案是在现有的TCP连接上使用StreamReader,下面的问题就是一个例子。虽然解决方案真的取决于你的服务器。
答案 1 :(得分:0)
如果您正在调用使用soap / xml的Web服务,请使用Web服务客户端(向Visual Studio项目添加Web引用)
使用System.Net.Http.HttpClient或System.Net.WebClient从Web服务器下载xml文件。
不要尝试使用TCP客户端解码加密的网络流量。