国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

c# TCP Socket通訊基礎

2019-11-17 03:06:07
字體:
來源:轉載
供稿:網友

c# TCP Socket通訊基礎

在做網絡通訊方面的程序時,必不可少的是Socket通訊。

那么我們需要有一套既定的,簡易的通訊流程。

如下:

<PRe name="code" class="csharp">public class PublicSocket    {        public const string DOWNLOAD_STATUS_WAIT = "1";        public const string DOWNLOAD_STATUS_PAUSE = "2";        public const string DOWNLOAD_STATUS_DOWNLOADING = "3";        public const string DOWNLOAD_STATUS_DOWNLOADED = "4";        public const string DOWNLOAD_STATUS_ERROR = "5";        //private xmlHelper xmlhelper = new XmlHelper();        private TcpClient tcpMethod = new TcpClient();        public static string LoginUserName = "";        public static Socket HeadClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);        private static string iAddress = "192.168.1.1";        private static int iport = 7888;        private static IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(iAddress), iPort);        public const int LOGIN_NAMEERROR = 100000;        public const int LOGIN_CODEERROR = 100001;        public const int LOGIN_ERROR = 100002;        public const int LOGIN_OK = 100003;        public static bool AllowUpdate = true;                public static void SocketConnect()        {            try            {                if (!HeadClient.Connected)                {                    HeadClient.Connect(endpoint);                }            }            catch (Exception ex)            { }        }        public static void SocketClose()        {            if (HeadClient.Connected)            {                HeadClient.Close();            }        }public static void ThreadGetSingleDownloadedFile(object data)   //object參數可以實現界面傳入數據進行使用        {            string retmd5 = string.Empty;            try            {                HanleListItemClass formInter = data as HanleListItemClass;                XmlDocument aa = XmlHelper.BuildXmlDoc("CMD", "1", "1",                 new List<HollXmlNode> { new HollXmlNode("ID","2",null),                                        new HollXmlNode("STATE","127",null) });                //主要為了構建XML文件進行Socket的send操作                //構造后如下  <?xml version='1.0' encoding='utf-8'?><CMD code='1'  index='1'>                //                 <ID>2</ID>                 //                <STATE>127</STATE></CMD>                byte[] sendaskbyte = Encoding.UTF8.GetBytes(aa.InnerXml.ToString());                int sendcount = 0;                try                {                    sendcount = HeadClient.Send(sendaskbyte, sendaskbyte.Length, 0);                }                catch (Exception ex)                {                    // return LOGIN_ERROR;                }                if (sendcount == 0)                {                    //return LOGIN_ERROR;                }                int ret = SingleDownloadedFileWaitBack(formInter);            }            catch            {                //return LOGIN_ERROR;            }        }        public static int SingleDownloadedFileWaitBack(HanleListItemClass tItemclass)        {            byte[] RetData = new byte[36 * 1024];            Array.Clear(RetData, 0, RetData.Length);            int datalen = 0;            try            {                datalen = HeadClient.Receive(RetData);                if (datalen == 0)                {                    return -1;                }                //接收到服務器返回的信息                string tcpdatastring = Encoding.UTF8.GetString(RetData).Replace("/0", " "); ;                //此處可以根據自己需求處理返回的信息 http://m.survivalescaperooms.com/sosoft/                               return 0;            }            catch (Exception ex)            {                return 0;            }        }    }

然后再界面調用的時候,我們只需要在事件中這么使用即可

 private void button1_Click(object sender, EventArgs e)       {  PublicSocket.SocketConnect();               ThreadPool.QueueUserWorkItem(new WaitCallback(SocketMethod.ThreadGetTotalState), this);       } 

同時也把構建XML的類分享出來,使得編碼更加簡便

 1 public class XmlHelper 2     { 3         private static string xmlinit = "<?xml version='1.0' encoding='utf-8'?><{0} code='{1}'  index='{2}'></{0}>"; 4  5         public static XmlDocument BuildXmlDoc(string xmltype, string code, string index, List<HollXmlNode> xmlnodes) 6         { 7             XmlDocument root = new XmlDocument(); 8             root.LoadXml(string.Format(xmlinit, xmltype, code, index)); 9 10             if (xmlnodes != null)11             {12                 for (int i = 0; i < xmlnodes.Count; i++)13                 {14                     XmlElement parentNode = root.CreateElement(xmlnodes[i].NodeName);15 16                     XmlText descText = root.CreateTextNode(xmlnodes[i].NodeValue);17                     parentNode.AppendChild(descText);18 19 20                     if (xmlnodes[i].NodeAtt != null)21                     {22                         if (xmlnodes[i].NodeAtt.Count > 0)23                         {24                             for (int j = 0; j < xmlnodes[i].NodeAtt.Count; j++)25                             {26                                 parentNode.SetAttribute(xmlnodes[i].NodeAtt[j].AttName, xmlnodes[i].NodeAtt[j].AttValue);27                             }28                         }29                     }30 31                     root.LastChild.AppendChild(parentNode);32                 }33             }34 35 36             return root;37         }38 39 40     }

 1 public class HollXmlNode 2   { 3     private string _nodename; 4     private string _nodevalue; 5     private List<HollXmlAttribute> _nodeatt; 6  7  8     public HollXmlNode(string tnodename, string tnodevalue, List<HollXmlAttribute> tnodeatt) 9     {10       _nodename = tnodename;11       _nodevalue = tnodevalue;12       _nodeatt = tnodeatt;13     }14 15 16     public string NodeName17     {18       get { return _nodename; }19       set { _nodename = value; }20     }21 22 23 24 25     public string NodeValue26     {27       get { return _nodevalue; }28       set { _nodevalue = value; }29     }30 31 32     public List<HollXmlAttribute> NodeAtt33     {34       get { return _nodeatt; }35       set { _nodeatt = value; }36     }37   }38 39 40   public class HollXmlAttribute41   {42     private string _attname;43     private string _attvalue;44 45 46     public HollXmlAttribute(string tname, string tvalue)47     {48       _attname = tname;49       _attvalue = tvalue;50     }51 52 53     public string AttName54     {55       get { return _attname; }56       set { _attname = value; }57     }58 59 60     public string AttValue61     {62       get { return _attvalue; }63       set { _attvalue = value; }64     }65   }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寻乌县| 余庆县| 保亭| 商丘市| 电白县| 卢氏县| 子洲县| 东乌珠穆沁旗| 昭平县| 马公市| 大港区| 姜堰市| 芜湖县| 宁化县| 濮阳县| 乳山市| 邵阳县| 阳春市| 廊坊市| 金昌市| 永新县| 武强县| 全南县| 高唐县| 开阳县| 怀柔区| 康平县| 三江| 安新县| 崇礼县| 千阳县| 盐津县| 武宣县| 漠河县| 深水埗区| 兴安县| 岳池县| 梁平县| 张家界市| 宁强县| 靖远县|