SOCKET数据传输用字符串加结束符


SOCKET数据传输用字符串加结束符比较简单,对于不同平台的客户端,也都用这种通用的方法简单一点。




服务器端影子对象类


public class ClientInfo
    {
        public IntPtr ConnId { get; set; }
        public string IpAddress { get; set; }
        public ushort Port { get; set; }
        public long Sends { get; set; }
        public long Receives { get; set; }
        public string User  { get; set; }
        public string Logontime { get; set; }
        public string Rtxt { get; set; }        
        public string Stxt { get; set; }
        public List<string[]> CommandArray { get; set; }

        public ClientInfo() 
        {
             CommandArray = new List<string[]>();
        }

        //--------分割函数,把长字符串解析到command-------
        public void RtxtCut() 
        {
            while (Rtxt.IndexOf('.') > 0)
            {
                //取"."前的字符串,按"|"分割
                string tmp = Rtxt.Substring(0, Rtxt.IndexOf('.'));
                string[] ss = tmp.Split('|').Where(s => !string.IsNullOrEmpty(s)).ToArray();

                CommandArray.Add(ss);

                //取"."前的字符串,也包含"." 上面取后删除掉!
                Rtxt = Rtxt.Substring(Rtxt.IndexOf('.') + 1);
            } 
        }

        public string  PrintFirstCommand()
        {
            string tmp = "";
            foreach (string one in CommandArray.ElementAt(0))
            {
                tmp = tmp + " " + one;
            }
            return tmp;

        }

    }


//------------SOCKET单次数据结构-----------

1|user1|123456.

5|L3AKFEM3XHY301592|AFI08L.


其中: .(结束)    |(数据分割 )


//------------数据存储对象-------------

 public List<string[]> CommandArray { get; set; }

这是一个字符串数组对象,正好把单次数据,分割放入一个字符串数组中,

每次数据到达,先读 . 结束符前面全部数据,然后按 | 把前面全部数据分割,

RtxtCut() 工作会连续切割字符串,把每一个 . 结束符前的字符串压入list中。


//-----------SOCKET单次发表数据------------ 

有很多场景,单次要求发送数据是一个表,不止是几个变量,

这时在单个变量中,再设置分隔符号和结束符号,用来表示表数据,


105|10005333-物料1-1,10004059-物料2-1,.

其中: . (结束)    | (数据分割 )

表数据中: ,(结束)   - (数据分割 )


处理代码:

string[] tab = s[1].Split(',');

for (int i = 0; i < tab.Count(); i++)
	{
	string[] row = tab[i].Split('-');
	}

















  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值