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从服务器读取文本文件并存储在字典中#_C#_Sockets_Dictionary_Client_Server - Fatal编程技术网

C# 如何使用c从服务器读取文本文件并存储在字典中#

C# 如何使用c从服务器读取文本文件并存储在字典中#,c#,sockets,dictionary,client,server,C#,Sockets,Dictionary,Client,Server,我应该从服务器接收一个文本文件,然后读取该文件并将其存储在客户端的字典中 我读过这个文件,但我不知道如何从这里取出文件中的信息并将其存储在词典中 我的文本文件包含以下详细信息: 艾米;10.30;100;$七, 柔韧的;4.30;100;$九, 鲍比;3.20;80;$七, 客户端代码 private static void loadMovies() { try { byte[] data = new byte[1024];

我应该从服务器接收一个文本文件,然后读取该文件并将其存储在客户端的字典中

我读过这个文件,但我不知道如何从这里取出文件中的信息并将其存储在词典中

我的文本文件包含以下详细信息:

艾米;10.30;100;$七,

柔韧的;4.30;100;$九,

鲍比;3.20;80;$七,

客户端代码

private static void loadMovies()
{
        try
        {
            byte[] data = new byte[1024];
            writer.WriteLine(BROWSE);
            writer.Flush();

            while (true)
            {
                data = ReceiveMovieData(server);
                MemoryStream ms = new MemoryStream(data);
                loadMovies();
                break;
            }
        }
        catch (Exception ex)
        {
            //textBox1.Text = ex.Message;
        }
    }

    private static byte[] ReceiveMovieData(Socket s)
    {
        int total = 0;
        int recv;
        byte[] datasize = new byte[4];

        recv = s.Receive(datasize, 0, 4, 0);
        int size = BitConverter.ToInt32(datasize, 0);
        int dataleft = size;
        byte[] data = new byte[size];


        while (total < size)
        {
            recv = s.Receive(data, total, dataleft, 0);
            if (recv == 0)
            {
                break;
            }
            total += recv;
            dataleft -= recv;
        }
        return data;
    }
private static void loadMovies()
{
尝试
{
字节[]数据=新字节[1024];
writer.WriteLine(浏览);
writer.Flush();
while(true)
{
数据=接收的电影数据(服务器);
MemoryStream ms=新的MemoryStream(数据);
loadMovies();
打破
}
}
捕获(例外情况除外)
{
//textBox1.Text=例如消息;
}
}
专用静态字节[]接收MovieData(套接字)
{
int-total=0;
int recv;
字节[]数据大小=新字节[4];
recv=s.Receive(数据大小,0,4,0);
int size=BitConverter.ToInt32(数据大小,0);
int dataleft=大小;
字节[]数据=新字节[大小];
while(总尺寸<尺寸)
{
recv=s.Receive(数据,总计,数据左侧,0);
如果(recv==0)
{
打破
}
总+=recv;
dataleft-=recv;
}
返回数据;
}

我假设您的数据由分号分隔
和每条记录被分隔线分隔。因此,我的建议是通过以下方式解析数据:

  • 每行读取每条记录
  • 拆分列(分号)。当您的数据已经是
    字符串时,可以使用以下方法处理:

    string s = "abc; 123";
    string[] columns = s.Split(';');
    
  • 然后正确地将每个列强制转换为其正确的数据类型

  • 然后将其存储到符合您要求的自定义
    词典中


您有什么问题吗?