未显示字符串的c#数组
以下是用c#编写的简单服务器和客户端代码段。我想从服务器发送一个字符串数组,从客户端接收它并在控制台上显示。但是没有显示字符串数组。代码中有什么错误吗 服务器 客户端未显示字符串的c#数组,c#,sockets,C#,Sockets,以下是用c#编写的简单服务器和客户端代码段。我想从服务器发送一个字符串数组,从客户端接收它并在控制台上显示。但是没有显示字符串数组。代码中有什么错误吗 服务器 客户端 我运行了你的代码,它挂在客户端的这一行 var stringArr = (string[])serializer.Deserialize(tcpClient.GetStream()); 然后我对它进行了修改,以便首先从网络流读取字节数组,然后使用MemoryStream对字节数组进行反序列化。然后它像我预期的那样工作 因此,使用
我运行了你的代码,它挂在客户端的这一行
var stringArr = (string[])serializer.Deserialize(tcpClient.GetStream());
然后我对它进行了修改,以便首先从网络流读取字节数组,然后使用MemoryStream对字节数组进行反序列化。然后它像我预期的那样工作
因此,使用带有反序列化的NetworkStream可能会出现问题
看看这个Stackoverflow问题,似乎XmlSerializer将继续尝试从流中读取,直到它到达末尾,这导致了您的问题
若要修复,请按照建议执行操作,并首先将要反序列化到字节数组中的数据读取。是否
stringArr
不为空?有异常吗?没有异常,但是字符串数组没有显示在客户端控制台@kamow中,这是客户端
和服务器
应用程序运行的触发器吗?请更具体地说@HeinzSiahaan@user5382101我理解,这就是为什么我问你反序列化后stringArr
是否为空。你能提供你修改过的代码吗@丹尔
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
using System.Xml.Serialization;
namespace Client
{
class Program
{
static void Main(string[] args)
{
try
{
byte[] data = new byte[1024];
string stringData;
TcpClient tcpClient = new TcpClient("127.0.0.1", 1234);
NetworkStream ns = tcpClient.GetStream();
var serializer = new XmlSerializer(typeof(string[]));
var stringArr = (string[])serializer.Deserialize(tcpClient.GetStream());
foreach (string s in stringArr)
{
Console.WriteLine(s);
}
string input = Console.ReadLine();
ns.Write(Encoding.ASCII.GetBytes(input), 0, input.Length);
ns.Flush();
}
catch (Exception e)
{
Console.Write(e.Message);
}
Console.Read();
}
}
}
var stringArr = (string[])serializer.Deserialize(tcpClient.GetStream());