博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
万网博通NMSS平台二次开发(UDP方式传输)
阅读量:4553 次
发布时间:2019-06-08

本文共 6830 字,大约阅读时间需要 22 分钟。

using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;namespace ServiceConsoleDemo{    class Program    {        static Socket send;              //Socket建立一个本地通信套接字          static EndPoint receivePoint;    //服务端端口             private static readonly object obj = new object();          static void Main(string[] args)              {            SendFun();             Thread ReceiveThd = new Thread(new ThreadStart(ReceiveFun));            ReceiveThd.Start();            Thread SendScoreThd = new Thread(new ThreadStart(ScoreCmdFun));            SendScoreThd.Start();            Thread SendDeviceThd = new Thread(new ThreadStart(DeviceCmdFun));            SendDeviceThd.Start();        }          static void SendFun()         {            try             {                send = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);                  send.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.52"), 2000));                Console.WriteLine("本地Socket通信已打开...");                receivePoint = new IPEndPoint(IPAddress.Parse("192.168.1.249"),8388);                       }             catch(Exception ex)              {                Console.WriteLine("打开发送命令失败:",ex.Message);              }                 }        static void  ReceiveFun()         {                        lock(obj)            {                while(true)                {                    try                    {                         byte[] buffer = new byte[65535];                                 int length = send.ReceiveFrom(buffer, ref receivePoint);                             string message = Encoding.UTF8.GetString(buffer, 0, length);                        Console.WriteLine(message);                                             }                    catch(Exception ex)                    {                         Console.WriteLine("连接服务端失败:",ex.Message);                      }                }                      }                     }        static void ScoreCmdFun()        {            Thread.Sleep(5000);              send.SendTo(Encoding.UTF8.GetBytes(scoreCmd()), receivePoint);            }        static string scoreCmd()        {            JsonHelper help = new JsonHelper();             help.Reset();            help.version = "0";            help.msgid = "461100725";            help.type = "51";            help.cmd = "7";            return help.ToJson();         }        static void DeviceCmdFun()        {            Thread.Sleep(10000);            send.SendTo(Encoding.UTF8.GetBytes(deviceCmd()), receivePoint);         }        static string deviceCmd()        {            JsonHelper help = new JsonHelper();            help.Reset();             help.version = "0";            help.msgid = "1487326767";            help.type = "1";            help.cmd = "4";            help.AddItem("pageNum", 0);            help.AddItem("rowCount", 50);              help.AddItem("search", "");            return help.ToJson();        }    }  }

需要JsonHelper类,如下

using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ServiceConsoleDemo{    public class JsonHelper    {        //对应JSON的singleInfo成员        protected string _version = string.Empty;        protected string _msgid = string.Empty;        protected string _type = string.Empty;        protected string _cmd = string.Empty;        public System.Collections.ArrayList arrData = new ArrayList();        protected System.Collections.ArrayList arrDataItem = new ArrayList();        public JsonHelper()          {         }        public string version        {            get            {                return _version;            }            set            {                //如设置error,则自动设置success为false                if (value != "") _version = string.Empty;                _version = value;            }        }        public string msgid        {            get            {                return _msgid;            }            set            {                //如设置error,则自动设置success为false                if (value != "") _msgid = string.Empty;                _msgid = value;            }        }        public string type        {            get            {                return _type;            }            set            {                //如设置error,则自动设置success为false                if (value != "") _type = string.Empty;                _type = value;            }        }        public string cmd        {            get            {                return _cmd;            }            set            {                //如设置error,则自动设置success为false                if (value != "") _cmd = string.Empty;                _cmd = value;            }        }        //重置,每次新生成一个json对象时必须执行该方法        public void Reset()        {            _version = string.Empty;            _msgid = string.Empty;            _type = string.Empty;            _cmd = string.Empty;            arrData.Clear();            arrDataItem.Clear();        }        public void AddItem(string name, string value)        {            arrData.Add("\"" + name + "\":" + "\"" + value + "\"");        }        public void AddItem(string name, int value)        {            arrData.Add("\"" + name + "\":" + "" + value + "");        }        public void ItemOk()        {            arrData.Add("
"); } //序列化JSON对象,得到返回的JSON代码 public string ToJson() { StringBuilder sb = new StringBuilder(); sb.Append("{
"); sb.Append("\"version\":" + _version.ToString().ToLower() + ","); sb.Append("\"msgid\":" + "\"" + _msgid.ToString().ToLower() + "\","); sb.Append("\"type\":" + _type.ToString().ToLower() + ","); sb.Append("\"cmd\":" + _cmd.ToString().ToLower() + ","); sb.Append("\"data\":{
"); int index = 0; if (arrData.Count <= 0) { sb.Append("}"); } else { foreach (string val in arrData) { index++; if (val != "
") { sb.Append(val + ","); } else { sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{
"); } } } sb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("}"); } sb.Append("}"); return sb.ToString(); } }}

 

转载于:https://www.cnblogs.com/HansZimmer/p/10613626.html

你可能感兴趣的文章
移动一根火柴使等式成立js版本(递归)
查看>>
Python学习笔记(三)windows下安装theano
查看>>
创建git仓库及简单操作命令
查看>>
设计模式10---设计模式之原型模式(Prototype)
查看>>
CSS之Medial Queries的另一用法:实现IE hack的方法
查看>>
oo第三单元总结
查看>>
linux-CentOS6.4下安装oracle11g详解
查看>>
tomcat禁用webdav
查看>>
还是畅通工程
查看>>
sql字段组合唯一
查看>>
电脑软件故障排除2014年2月16日[修正版]
查看>>
YARN的笔记
查看>>
[机器学习]回归--(Simple LR and Multiple LR)
查看>>
【Linux开发】【DSP开发】Linux设备驱动之——PCI 总线
查看>>
【机器学习】Learning to Rank之Ranking SVM 简介
查看>>
http请求之of_ordering_http_get
查看>>
jqgrid标题栏右边显示展开/收缩jqGrid内容的小箭头
查看>>
1、面向对象内置函数 2、反射 3、内置方法
查看>>
关于传输协议的简单了解
查看>>
软件运行不了需安装.NET fremework3.5,或0xc0000135初始化失败怎么解决
查看>>