.net tcp网络编程之中心服务

前段时间手里拿到一个项目,我去,网络编程,没做过,而且是物联网,和一车载设备通讯,做中心服务。

于是苦日子算是过上了。博客园里面看文章,找知识。经过一环一环的摸索后,任务算是完成了。下面仅做以后浏览之用。

tcp网络编程,用的socket,这个容易,无非就新建个线程然后开始监听一端口,然后开始就接数据呗,说着很简单哦,其实做起来也不难

只有把其中的道道理清,万事无难。

先来段代码,新建线程监听的。呸~

Thread mythread;
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();

        /// <summary>
        /// 服务端指定端口进行监听
        /// </summary>
        private void BeginListen()
        {
            string ip="127.0.0.1";
            int port=16242
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse(ip), port);
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(iep);
            socket.Listen(10);
            while (true)
            {
                Socket newSocket = socket.Accept();
                byte[] byteMessage = new byte[byteSize];
                int recivieLen = newSocket.Receive(byteMessage);//接收字节数据的长度
            }
        }

 OK,我监听起来。然后等着客户端来接头了。

因为公司IP老变,修改设备参数麻烦。于是我就自己模拟向服务端传数据。呸~

好了,现在我们正式开始吧。服务端监听到客户端来了,接收数据。三次握手不说了,找找就能看到。

接到数据OK,下面进行处理。

我的工作呢还有就是在不定时对客户端发送数据。这里就麻烦了,因为我接收的设备的IP地址每次都再变,当时我很彷徨啊。他一直变我怎么给他传数据呢。

后来,请教了一哥们他说他缓存到字典了。于是乎我有了想法。 把所有监听到的客户端socket对象放到一个list泛型列表中。

这list泛型变量封装到属性中,做成静态,全局访问。

收发自由了,万岁,可是又遇到问题了,啥呢。原来只能监听到新建客户端。也就是说呢,已经连接上的客户端将不能接收数据。

这下不对了。我中心服务端要每隔一段时间接收数据的。

最后又请假了一朋友。他说他看过一文章。人家轮询。我去,一句点醒梦中人

我这都有泛型列表了。我放个timer定个interval,然后执行对list轮询。每个客户端接收数据。

罗里罗嗦,终于完了。代码没有。只有想法。哎。肯定不被人喜欢,但是写个自己的。见笑。

posted @ 2012-11-29 09:22  archip  阅读(313)  评论(0编辑  收藏  举报