udp,json,List,dataGridView

关键词:udp,json,List,dataGridView

以下代码要做什么:udp发送json格式请求,服务器会立刻返回数据(当然是json格式),对数据进行解析(json.net),将数据保存在List并在dataGridView中显示。不定条目,新的就创建,旧的就留着。

 

构造json结构请求 

//构造要发送的请求,用json格式
        public JObject GetJObject()
        {
            var obj = new JObject {{"Command","Get Status"}};
            return obj;
        }

转为字符串

string command = GetJObject().ToString();

 发送命令并接收json结构数据

datByte = jTudpt.Transmit(System.Text.Encoding.Default.GetBytes(command), 0, timeOut,1);
//上面这个函数为udp函数,发送数据后服务器会立即返回数据.此处返回的数据为Json格式,报文类型如下
JArray jlist = (JArray)JsonConvert.DeserializeObject(datString);

for(int i=0;i<jlist.Count;i++)
{
    bool isNewServer = true; 
    
    JObject tempo = JObject.Parse(jlist[i].ToString());
    //获取到数据
    string name = tempo["Name"].ToString();
    string status = tempo["Status"].ToString();
    if (stateInfo.Count > 0)
    {
            foreach (DatStatus datStatus in stateInfo)
            {
                  if (datStatus.name == name)
                  {
                      isNewServer = false;
                      //其他操作
                  }
            }
    }
    if(stateInfo.Count == 0 || isNewServer)
    {
         DatStatus datStatus = new DatStatus();
         //接收到list             
         datStatus.name = name;
         datStatus.status = status;
         stateInfo.Add(datStatus);

         //在dataGridView中创建一行数据
         int rowIndex = this.dataGridViewInfo.Rows.Add();
         dataGridViewInfo.Rows[rowIndex].Cells[0].Value = name;//更新状态
         dataGridViewInfo.Rows[rowIndex].Cells[1].Value = status;//更新状态
         dataGridViewInfo.Rows[rowIndex].Cells[1].Value = datStatus.isChoice;//更新状态
    }   
}
//需要接收的数据报文
“[{"Name":"AAA","Status":"A"},
   {"Name":"BBB","Status":"AA"},
   {"Name":"CCC","Status":"AAA"},
   {"Name":"DDD","Status":"A"}
   ]”

创建List接收数据

private volatile List<DatStatus> stateInfo;
stateInfo = new List<DatStatus>();
class DatStatus
{
    public string name;
    public string status;
    public Boolean isChoice;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sethnieTech

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值