{"id":111,"date":"2010-02-06T14:07:45","date_gmt":"2010-02-06T05:07:45","guid":{"rendered":"http:\/\/phpdev.comsys-blog.com\/?p=111"},"modified":"2010-02-06T14:07:45","modified_gmt":"2010-02-06T05:07:45","slug":"c%e3%81%a7%e5%8f%97%e4%bf%a1%e3%82%b9%e3%83%ac%e3%83%83%e3%83%89%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9ftcp%ef%bc%8fip%e5%8f%97%e4%bf%a1%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88","status":"publish","type":"post","link":"https:\/\/tamura.jp\/?p=111","title":{"rendered":"C#\u3067\u53d7\u4fe1\u30b9\u30ec\u30c3\u30c9\u3092\u4f7f\u3063\u305fTCP\uff0fIP\u53d7\u4fe1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8"},"content":{"rendered":"<p>\u4e45\u3057\u3076\u308a\u306bC#\u3067TCP\/IP\u306e\u901a\u4fe1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u6570\u5024\u304c\u98db\u3093\u3067\u304f\u308b\u306e\u3067\u3001\u305d\u308c\u3092\u53d7\u4fe1\u3057\u305f\u3089\u30a4\u30d9\u30f3\u30c8\u3067\u6e21\u3059\u30d7\u30ed\u30b0\u30e9\u30e0\u3002<\/p>\n<p>\u30e1\u30a4\u30f3\u306fWindows\u30d5\u30a9\u30fc\u30e0\u3067\u3001\u5185\u90e8\u306f\uff12\u6bb5\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u3002<\/p>\n<p>\u30a4\u30d9\u30f3\u30c8\u306f\u5225\u30b9\u30ec\u30c3\u30c9\u306b\u306a\u308b\u306e\u3067\u3001\u3061\u3087\u3063\u3068\u3066\u3053\u305a\u3063\u305f\u304c\u3053\u3093\u306a\u3082\u3093\u304b\u3044\u3068\u3044\u3046\u611f\u3058\u3002<\/p>\n<p>\u3082\u3046\u5c11\u3057\u3044\u3044\u65b9\u6cd5\u304c\u3042\u3063\u305f\u3089\u8ab0\u304b\u304a\u3057\u3048\u3066\u3061\u3087\uff01<\/p>\n<h2><span style=\"color: #ff6600\">\u63a5\u7d9a\u5f85\u3061\u30b9\u30ec\u30c3\u30c9\u30af\u30e9\u30b9<\/span><\/h2>\n<pre>using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net.Sockets;\nusing System.Net;\nusing System.Threading;\n\nnamespace TcpClass\n{\n    public class TcpReceiveEventArgs : EventArgs\n    {\n        public TcpReceiveEventArgs(long Temperature)\n        {\n            this.Temperature = Temperature;\n        }\n        private long temperature;\n\n        public long Temperature\n        {\n            get { return temperature; }\n            set { temperature = value; }\n        }\n    }\n    public delegate void TcpReceiveEventHandler(long temperature);\n    public class TcpReceive\n    {\n        public event TcpReceiveEventHandler onTcpReceive;\n        private int portNo;\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u505c\u6b62\u547d\u4ee4\u7528\n        private bool stop_flg  = false;\n\n        public TcpReceive(int portNo)\n        {\n            this.portNo = portNo;\n            \/\/ \u63a5\u7d9a\u5f85\u3061\u306e\u30b9\u30ec\u30c3\u30c9\u3092\u958b\u59cb\n            Thread thread = new Thread(new ThreadStart(ListenStart));\n            \/\/ \u30b9\u30ec\u30c3\u30c9\u3092\u30b9\u30bf\u30fc\u30c8\n            thread.Start();\n        }\n\n        public void Dispose()\n        {\n            stop_flg = true;\n            GC.SuppressFinalize(this);\n        }\n\n        \/**\n         * \u63a5\u7d9a\u5f85\u3061\u30b9\u30ec\u30c3\u30c9\u672c\u4f53\n        *\/\n        private void ListenStart()\n        {\n            \/\/ Listener\u306e\u751f\u6210\n            TcpListener listener = new TcpListener(IPAddress.Any, this.portNo);\n            \/\/ \u63a5\u7d9a\u8981\u6c42\u53d7\u3051\u5165\u308c\u958b\u59cb\n            listener.Start();\n            while (!stop_flg)\n            {\n                \/\/ \u63a5\u7d9a\u5f85\u3061\u304c\u3042\u308b\u304b\uff1f\n                if (listener.Pending() == true)\n                {\n                    \/\/ \u63a5\u7d9a\u8981\u6c42\u3092\u53d7\u3051\u5165\u308c\u308b\n                    TcpClient tcp = listener.AcceptTcpClient();\n                    TcpReceiveWorker rcv = new TcpReceiveWorker(tcp, this);\n                    Thread thread = new Thread(new ThreadStart(rcv.TCPClientProc));\n                    \/\/ \u30b9\u30ec\u30c3\u30c9\u3092\u30b9\u30bf\u30fc\u30c8\n                    thread.Start();\n                }\n                else\n                {\n                    Thread.Sleep(0);\n                }\n            }\n            \/\/ \u63a5\u7d9a\u5f85\u3061\u7d42\u4e86\n            listener.Stop();\n        }\n        protected virtual void OnReceiveEvent(long temperature)\n        {\n            if (onTcpReceive != null)\n            {\n                onTcpReceive(temperature);\n            }\n        }\n        internal void RiaseEvent(long temperature)\n       {\n           OnReceiveEvent(temperature);\n       }\n    }\n}<\/pre>\n<h2><span style=\"color: #ff6600\">\u30c7\u30fc\u30bf\u53d7\u4fe1\u30b9\u30ec\u30c3\u30c9\u30af\u30e9\u30b9<\/span><\/h2>\n<pre>using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net.Sockets;\nusing System.Net;\nusing System.Threading;\nusing System.Collections;\n\nnamespace TcpClass\n{\n    class TcpReceiveWorker\n    {\n        private TcpClient tcp = null;\n        TcpReceive rcv = null;\n        public TcpReceiveWorker(TcpClient tcp,TcpReceive rcv)\n        {\n            this.tcp = tcp;\n            this.rcv = rcv;\n        }\n        public void TCPClientProc()\n        {\n            NetworkStream st = tcp.GetStream();\n            ArrayList aryList = new ArrayList();\n            long count = 0;\n            do\n            {\n                int nret = st.ReadByte();\n                if (nret &lt; '0' || nret &gt; '9')\n                {\n                    break;\n                }\n                if (nret != -1)\n                {\n                    aryList.Add((byte)nret);\n                }\n                count++;\n                if (count &gt; 8 ) break;\n            } while (tcp.Connected == true);\n            \/\/ \u30bd\u30b1\u30c3\u30c8\u3092\u9589\u3058\u308b\n            tcp.Close();\n            \/\/ \u53d7\u4fe1\u3057\u305f\u3082\u306e\u3092byte\u914d\u5217\u306b\u5909\u63db\n            byte[] byt = new byte[aryList.Count];\n            for (int i = 0; i &lt; aryList.Count; i++)\n            {\n                byt[i] = (byte)aryList[i];\n            }\n            string strFromByte = Encoding.ASCII.GetString(byt);\n            long ret = long.Parse(strFromByte);\n            rcv.RiaseEvent(ret);\n        }\n\n    }\n}<\/pre>\n<h2><span style=\"color: #ff6600\">\u30c7\u30fc\u30bf\u9001\u4fe1\u30af\u30e9\u30b9<\/span><\/h2>\n<pre>using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Net;\nusing System.Net.Sockets;\n\nnamespace TcpClass\n{\n    public class TcpSend\n    {\n        public string hostName;\n        public int portNo;\n        public TcpSend(string hostName,int portNo)\n        {\n            this.hostName = hostName;\n            this.portNo = portNo;\n        }\n\n        public Boolean send(long value)\n        {\n            try\n            {\n                \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u7528\u306e\u30bd\u30b1\u30c3\u30c8\u3092\u4f5c\u6210\u3059\u308b\n                TcpClient cl = new TcpClient();\n                \/\/ \u30b5\u30fc\u30d0\u30fc\u3078\u63a5\u7d9a\u3059\u308b\n                cl.Connect(hostName, portNo);\n                \/\/ \u63a5\u7d9a\u3057\u305f\u30bd\u30b1\u30c3\u30c8\u304b\u3089NetworkStream\u3092\u53d6\u5f97\n                NetworkStream stream = cl.GetStream();\n                Encoding encode = Encoding.Default;\n                \/\/ \u9001\u4fe1\u3059\u308b\u6587\u5b57\u5217\u3092\u30d0\u30a4\u30c8\u914d\u5217\u306b\u5909\u63db\n                \/\/ \u3053\u306e\u969b\u306b\u3001\u30a8\u30f3\u30b3\u30fc\u30c9\u3082\u540c\u6642\u306b\u884c\u3046\u3002\n                string s = value.ToString();\n                byte[] bytData =\n                    encode.GetBytes(s);\n\n                \/\/ \u66f8\u304d\u51fa\u3057\u3092\u884c\u3046\u3002\n                stream.Write(bytData, 0, bytData.Length);\n                \/\/ \u30d5\u30e9\u30c3\u30b7\u30e5(\u5f37\u5236\u66f8\u304d\u51fa\u3057)\n                \/\/ \u3053\u308c\u3092\u884c\u308f\u306a\u3044\u3068\u3001\u78ba\u5b9f\u306b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u6d41\u308c\u306a\u3044\u3002\n                stream.Flush();\n                \/\/ \u30bd\u30b1\u30c3\u30c8\u3092\u30af\u30ed\u30fc\u30ba\n                cl.Close();\n            }\n            catch (SocketException eSocket)\n            {\n                System.Diagnostics.Debug.Write(eSocket.Message);\n                return false;\n            }\n            catch (Exception ex)\n            {\n                System.Diagnostics.Debug.Write(ex.Message);\n                return false;\n            }\n            return true;\n        }\n    }\n}<\/pre>\n<h2><span style=\"color: #ff6600\">\u30a4\u30d9\u30f3\u30c8\u304c\u30af\u30e9\u30b9\u306a\u306e\u3067\u30d5\u30a9\u30fc\u30e0\u306e\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u3068\u304d\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u306a\u3093\u3067\u3053\u3093\u306a\u611f\u3058<\/span><\/h2>\n<pre>        void c_onTcpReceive(object sender, TcpReceiveEventArgs eventCode)\n        {\n            CheckForIllegalCrossThreadCalls = false;  \/* \u5225\u30b9\u30ec\u30c3\u30c9\u3067\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b *\/\n            this.textTemperature.Text += eventCode.Temperature;\n            this.textTemperature.Text += \"\\n\";\n        }<\/pre>\n<h2><span style=\"color: #ff6600\">\u5b9f\u306f\u30a4\u30d9\u30f3\u30c8\u3092\u53d7\u3051\u53d6\u308b\u3068\u304d\u5225\u30b9\u30ec\u30c3\u30c9\u3067\u53d7\u3051\u53d6\u308b\u305f\u3081\u4e0b\u306e\u3084\u308a\u65b9\u304c\u6b63\u3057\u3044 \u304b\u306a\u308a\u3084\u3084\u3053\u3057\u3044\u304c\u3001\u6614\u306a\u3089\u30a6\u30a3\u30f3\u30c9\u30a6\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4f7f\u3063\u3066\u3044\u305f\u304b\u3089\u3001\u3053\u306e\u65b9\u304c\u7c21\u5358\u5316\u3082\u3057\u308c\u306a\u3044\u3002\u3067\u3082\u3084\u3084\u3053\u3057\u3044\uff01<\/span><\/h2>\n<pre>        private void button1_Click(object sender, EventArgs e)\n        {\n            c = new TcpReceive(10000);\n            c.onTcpReceive += new TcpReceiveEventHandler(c_onTcpReceive);\n        }\n\n        void c_onTcpReceive(long temperature)\n        {\n            if (textTemperature.InvokeRequired)\n            {\n                Invoke(new delSetTemperature(setTemperature), new object[] { temperature });\n            }\n            else\n            {\n                setTemperature(temperature);\n            }\n        }\n        delegate void delSetTemperature(long temperature);\n        void setTemperature(long temperature)\n        {\n            textTemperature.Text += temperature;\n            textTemperature.Text += \"\\n\";\n        }<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e45\u3057\u3076\u308a\u306bC#\u3067TCP\/IP\u306e\u901a\u4fe1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306b\u306a\u3063\u305f\u3002 \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u6570\u5024\u304c\u98db\u3093\u3067\u304f\u308b\u306e\u3067\u3001\u305d\u308c\u3092\u53d7\u4fe1\u3057\u305f\u3089\u30a4\u30d9\u30f3\u30c8\u3067\u6e21\u3059\u30d7\u30ed\u30b0\u30e9\u30e0\u3002 \u30e1\u30a4\u30f3\u306fWindows\u30d5\u30a9\u30fc\u30e0\u3067\u3001\u5185\u90e8\u306f\uff12\u6bb5\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u3002 \u30a4\u30d9\u30f3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[],"class_list":["post-111","post","type-post","status-publish","format-standard","hentry","category-c"],"_links":{"self":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=111"}],"version-history":[{"count":0,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/111\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}