如何通过tcp侦听器从接收到的流中剪切并从中提取字符串和二进制图像?(c#)

如何通过tcp侦听器从接收到的流中剪切并从中提取字符串和二进制图像?(c#),c#,sockets,tcp,networkstream,C#,Sockets,Tcp,Networkstream,我通过tcp套接字从第三方软件获取数据流,该软件由一个xml和两个图像组成。我不知道如何从中提取图像 我将所有流数据保存在文本文件中,如下所示: 我试着剪切xml和下面的图像并保存这些图像。但图像显示无效或损坏,这意味着我做得不对。 你能在这方面帮助我吗,如何提取图像。第三方没有透露太多数据。但从流中,我可以假设它是二进制数据,我从字符串到字节或字节到字符串的转换是错误的。我是第一次使用tcp侦听器,请帮助。 这是我的测试代码: if(myNetworkStream.CanRead) { 字节

我通过tcp套接字从第三方软件获取数据流,该软件由一个xml和两个图像组成。我不知道如何从中提取图像

我将所有流数据保存在文本文件中,如下所示:

我试着剪切xml和下面的图像并保存这些图像。但图像显示无效或损坏,这意味着我做得不对。 你能在这方面帮助我吗,如何提取图像。第三方没有透露太多数据。但从流中,我可以假设它是二进制数据,我从字符串到字节或字节到字符串的转换是错误的。我是第一次使用tcp侦听器,请帮助。 这是我的测试代码:

if(myNetworkStream.CanRead)
{
字节[]myReadBuffer=新字节[1024];
StringBuilder myCompleteMessage=新建StringBuilder();
int numberOfBytesRead=0;
//传入消息可能大于缓冲区大小。
做
{
numberOfBytesRead=myNetworkStream.Read(myReadBuffer,0,myReadBuffer.Length);
myCompleteMessage.AppendFormat(“{0}”,Encoding.ASCII.GetString(myReadBuffer,0,numberOfBytesRead));
if(numberOfBytesRead==myReadBuffer.Length)
{
allData.AddRange(myReadBuffer);
}
否则如果(numberOfBytesRead>0)
{
AddRange(myReadBuffer.Take(numberOfBytesRead));
}
}
while(myNetworkStream.DataAvailable);
//将收到的消息打印到控制台。
WriteInformation(“您收到以下消息:“+myCompleteMessage”);
string filepath=Path.Combine(@“C:\Temp”,“ReceivedFile_u“+DateTime.Now.ToString().Replace(“/”,”).Replace(“.”,”).Replace(“:”,”).Replace(“,”)+“.txt”);
File.WriteAllText(文件路径,myCompleteMessage.ToString());
string bufferString=myCompleteMessage.ToString();
int noofboundary=0;
而(!string.IsNullOrEmpty(bufferString))
{
if(bufferString.IndexOf(“--boundary”)>-1&&noofboundary==0)//xml
{

bufferString=bufferString.Remove(0,bufferString.IndexOf)(“这看起来像是一个HTTP请求,如果是这样,那么在IIS上使用ASP.Net或Kestrel+ASP.Net core这样的web服务器似乎是明智的,因为您将获得服务请求和解码多部分表单数据所需的所有工具(这就是您所拥有的)