Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未显示字符串的c#数组_C#_Sockets - Fatal编程技术网

未显示字符串的c#数组

未显示字符串的c#数组,c#,sockets,C#,Sockets,以下是用c#编写的简单服务器和客户端代码段。我想从服务器发送一个字符串数组,从客户端接收它并在控制台上显示。但是没有显示字符串数组。代码中有什么错误吗 服务器 客户端 我运行了你的代码,它挂在客户端的这一行 var stringArr = (string[])serializer.Deserialize(tcpClient.GetStream()); 然后我对它进行了修改,以便首先从网络流读取字节数组,然后使用MemoryStream对字节数组进行反序列化。然后它像我预期的那样工作 因此,使用

以下是用c#编写的简单服务器和客户端代码段。我想从服务器发送一个字符串数组,从客户端接收它并在控制台上显示。但是没有显示字符串数组。代码中有什么错误吗

服务器 客户端
我运行了你的代码,它挂在客户端的这一行

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());