首页新闻找找看学习计划

C# Socket 如何在死循环中接收并解析数据

0
悬赏园豆:30 [待解决问题]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
     //创建Socket
     System.Net.Sockets.Socket socket = socketCreate.SocketCreate("10.231.199.223", 9014);
     //byte[] bytes = Encodings.DataEncoding.GetBytes(msgs);
     //向服务器发送消息
      FSocket.Send(socket, msgs);
     //服务器返回的消息列表
      List<string> list = FSocket.List;
     //清空缓存
      list.Clear();
     //用死循环向服务器不停的接收消息,如果有数据,我需要解析这条数据,并返回给前台
       while (true)
      {
      //接收服务器上所有的消息,存储到FSocket.List属性中
        FSocket.Receive(socket);
   // 我在这有些疑惑,希望各位能帮助我,UnCode(List)方法应该写在哪里.
        //方法写在while里面不行,因为一旦list中存在数据,我就得解析,并return给调用者,这个时候就跳出循环,不能一直接收服务器给我的消息了          
        //写在while代码块外面也不行,因为while是一直在循环,循环没结束,是不可能访问到循环之外的代码的
        //24小时在线等各位的建议
              if(list.Count>0)
                {
             //如果list中有数据,调用unCode方法解析list中的数据
                 return   UnCode(list);
      }
            }
        }
片叶不沾身的主页 片叶不沾身 | 初学一级 | 园豆:172
提问于:2013-05-26 08:49
< >
分享
所有回答(4)
0

可以使用异步委托,这个也叫Socket异步编程。具体的你可以看一下MSDN SOCKET API。

朝曦 | 园豆:1073 (小虾三级) | 2013-05-26 09:15

异步委托,委托我都用得很少。我先去瞧瞧,谢谢拉

支持(0) 反对(0) 片叶不沾身 | 园豆:172 (初学一级) | 2013-05-26 09:19
0

单独用个线程来处理数据不是更好

悟了 | 园豆:521 (小虾三级) | 2013-05-26 10:56

我想问下怎么处理这些线程?

支持(0) 反对(0) 片叶不沾身 | 园豆:172 (初学一级) | 2013-05-26 15:40
0

简单的生产者消费者模式嘛,一个线程不停的收数据,一个线程专门解析数据就可以了。

天方 | 园豆:5264 (大侠五级) | 2013-05-26 12:10

我就是这个意思,你能告诉我咋写嘛

支持(0) 反对(0) 片叶不沾身 | 园豆:172 (初学一级) | 2013-05-26 15:35
0

在循环外新建一个临时变量,专门存放死循环中取出的值,最后分析即可。

程序诗人 | 园豆:313 (菜鸟二级) | 2013-06-04 15:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册