C#伺服器源碼

來源:互聯網
上載者:User

using System;<br />using System.Collections.Generic;<br />using System.Text;<br />using System.Diagnostics;<br />using System.Runtime.InteropServices;</p><p>namespace ConsoleApplication22<br />{<br /> class Program<br /> {<br /> [DllImport("Ws2_32.dll")]<br /> public static extern uint inet_addr(String addr);</p><p> [DllImport("Iphlpapi.dll")]<br /> public static extern int SendARP(uint dest, Int32 host, ref Int64 mac, ref Int32 length);</p><p> static void Main(string[] args)<br /> {<br /> string[] Signal= new string[5] {<br /> "59",<br /> "50",<br /> "23",<br /> "591",<br /> "720"};</p><p> string[] Lock = new string[3] {<br /> "0/r/n",<br /> "1/r/n",<br /> "2/r/n" };</p><p> string[] Status = new string[4] {<br /> "Stopped/r/n",<br /> "Init/r/n",<br /> "Ready/r/n",<br /> "eee/r/n" };</p><p> Random ra = new Random();<br /> int tmp1 = ra.Next();<br /> int tmp2 = ra.Next();<br /> int tmp3 = ra.Next();</p><p> //文字コードを指定する<br /> System.Text.Encoding enc = System.Text.Encoding.UTF8;</p><p> string host = "192.168.6.125";<br /> int port = 14;</p><p> System.Net.IPAddress ipAdd =<br /> System.Net.Dns.Resolve(host).AddressList[0];</p><p> System.Net.Sockets.TcpListener listener =<br /> new System.Net.Sockets.TcpListener(ipAdd, port);</p><p> listener.Start();</p><p> Console.WriteLine("Port{0}のListenを開始しました。", port);</p><p> //接続要求があったら受け入れる<br /> System.Net.Sockets.TcpClient tcp = listener.AcceptTcpClient();</p><p> Console.WriteLine("クライアントが接続しました。");</p><p> //NetworkStreamを取得<br /> System.Net.Sockets.NetworkStream ns = tcp.GetStream();</p><p> string strMsg = Signal[tmp1 % 5] + Lock[tmp2 % 3] + Status[tmp3 % 4];<br /> Console.WriteLine(strMsg);</p><p> //クライアントから送られたデータを受信する<br /> System.IO.MemoryStream ms = new System.IO.MemoryStream();<br /> byte[] resBytes = new byte[256];<br /> int resSize;<br /> //データの一部を受信する<br /> resSize = ns.Read(resBytes, 0, resBytes.Length);<br /> //受信したデータを蓄積する<br /> ms.Write(resBytes, 0, resSize);<br /> string resMsg = enc.GetString(ms.ToArray());<br /> Console.WriteLine(resMsg);<br /> //文字列をByte型配列に変換<br /> byte[] sendBytes = enc.GetBytes(strMsg);<br /> System.Threading.Thread.Sleep(100);<br /> //データを送信する<br /> ns.Write(sendBytes, 0, sendBytes.Length);</p><p> //Console.WriteLine("sleep begin");<br /> //System.Threading.Thread.Sleep(1000);<br /> //Console.WriteLine("sleep end");</p><p> while (true)<br /> {<br /> try<br /> {<br /> ns = tcp.GetStream();<br /> resBytes = new byte[256];<br /> resSize = ns.Read(resBytes, 0, resBytes.Length);<br /> ms = new System.IO.MemoryStream();<br /> ms.Write(resBytes, 0, resSize);<br /> resMsg = enc.GetString(ms.ToArray());<br /> if (resMsg.IndexOf("version") > -1)<br /> {<br /> sendBytes = enc.GetBytes("DEVICE-100 Version 1.20 (Jun.02.2010)");<br /> ns.Write(sendBytes, 0, sendBytes.Length);<br /> }<br /> else if (resMsg.IndexOf("Restart") > -1)<br /> {<br /> sendBytes = enc.GetBytes(strMsg);<br /> ns.Write(sendBytes, 0, sendBytes.Length);<br /> Console.WriteLine(strMsg);<br /> }</p><p> //Console.WriteLine(resMsg);<br /> }<br /> catch<br /> {<br /> break ;<br /> }<br /> }</p><p> //do<br /> //{<br /> // //クライアントから送られたデータを受信する<br /> // System.IO.MemoryStream ms = new System.IO.MemoryStream();<br /> // byte[] resBytes = new byte[256];<br /> // int resSize;<br /> // //データの一部を受信する<br /> // resSize = ns.Read(resBytes, 0, resBytes.Length);<br /> // //Readが0を返した時はクライアントが切斷したと判斷<br /> // if (resSize == 0)<br /> // {<br /> // Console.WriteLine("クライアントが切斷しました。");<br /> // Console.ReadLine();<br /> // return;<br /> // }<br /> // //受信したデータを蓄積する<br /> // ms.Write(resBytes, 0, resSize);<br /> // string resMsg = enc.GetString(ms.ToArray());<br /> // Console.WriteLine(resMsg);<br /> // //文字列をByte型配列に変換<br /> // byte[] sendBytes = enc.GetBytes(resMsg);<br /> // System.Threading.Thread.Sleep(100);<br /> // //データを送信する<br /> // ns.Write(sendBytes, 0, sendBytes.Length);<br /> // ms.Close();<br /> //} while (true);<br /> //受信したデータを文字列に変換<br /> //クライアントにデータを送信する<br /> //string sendMsg = resMsg.Length.ToString() + "文字";<br /> ////文字列をByte型配列に変換<br /> //byte[] sendBytes = enc.GetBytes(sendMsg);<br /> ////データを送信する<br /> //ns.Write(sendBytes, 0, sendBytes.Length);<br /> //Console.WriteLine(sendMsg);</p><p> //閉じる<br /> tcp.Close();<br /> Console.WriteLine("切斷しました。");</p><p> //リスナを閉じる<br /> listener.Stop();<br /> Console.WriteLine("Listenerを閉じました。");</p><p> Console.ReadLine();</p><p> }<br /> static private bool CheckNetworkIP(String remoteIP)<br /> {<br /> uint ldest = inet_addr(remoteIP);<br /> try<br /> {<br /> Int64 macinfo = new Int64();<br /> Int32 len = 6;<br /> int res = SendARP(ldest, 0, ref macinfo, ref len);<br /> if (res == 0)<br /> {<br /> return false;<br /> }<br /> else<br /> {<br /> return true;<br /> }<br /> }<br /> catch (Exception)<br /> {<br /> return false;<br /> }</p><p> }<br /> static bool ExecuteBAT(String strBatPath)<br /> {<br /> Process pro = new Process();<br /> try<br /> {<br /> pro.StartInfo.FileName = strBatPath; //strBatPathのFull Path<br /> pro.StartInfo.CreateNoWindow = false;<br /> pro.StartInfo.UseShellExecute = false;</p><p> if (strBatPath.LastIndexOf("//") != -1)<br /> {<br /> pro.StartInfo.WorkingDirectory = strBatPath.Substring(0, strBatPath.LastIndexOf("//"));<br /> }<br /> //バッチファイルを実行する<br /> if (pro.Start())<br /> {<br /> if (!pro.WaitForExit(60 * 1000 * 5))<br /> {<br /> pro.Kill();<br /> return false;<br /> }<br /> }<br /> else<br /> {<br /> pro.Kill();<br /> return false;<br /> }</p><p> }<br /> catch (Exception ex)<br /> {<br /> pro.Kill();<br /> //エラーログ出力<br /> return false;<br /> }<br /> pro.Close();<br /> return true;<br /> }<br /> static public string ROTEncode(ref string InputText)<br /> {<br /> int i;<br /> char CurrentCharacter;<br /> int CurrentCharacterCode;<br /> string EncodedText = "";<br /> string OutputText = "";<br /> //Iterate through the length of the input parameter<br /> for (i = 0; i < InputText.Length; i++)<br /> {<br /> int iCurrentCharacterCode = -1;</p><p> //Convert the current character to a char<br /> CurrentCharacter = System.Convert.ToChar(InputText.Substring(i, 1));</p><p> CurrentCharacterCode = (int)CurrentCharacter;</p><p> if (CurrentCharacterCode >= 97 && CurrentCharacterCode <= 109)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode + 13 - 32;<br /> }<br /> else if (CurrentCharacterCode >= 110 && CurrentCharacterCode <= 122)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode - 13 - 32;<br /> }<br /> else if (CurrentCharacterCode >= 65 && CurrentCharacterCode <= 77)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode + 13 + 32;<br /> }<br /> else if (CurrentCharacterCode >= 78 && CurrentCharacterCode <= 90)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode - 13 + 32;<br /> }<br /> else if (CurrentCharacterCode >= 48 && CurrentCharacterCode <= 52)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode + 5;<br /> }<br /> else if (CurrentCharacterCode >= 53 && CurrentCharacterCode <= 57)<br /> {<br /> iCurrentCharacterCode = CurrentCharacterCode - 5;<br /> }<br /> if (iCurrentCharacterCode != -1)<br /> {<br /> EncodedText = (char)iCurrentCharacterCode + EncodedText;<br /> OutputText = OutputText + (char)CurrentCharacterCode;<br /> }<br /> }<br /> InputText = OutputText;<br /> return EncodedText;<br /> }<br /> }<br />}<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.