.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轮询。每个客户端接收数据。
罗里罗嗦,终于完了。代码没有。只有想法。哎。肯定不被人喜欢,但是写个自己的。见笑。
--------------------------------------------------------------------------------------------------------------------------
博主小站,关注HTML5,脚本开发,收集常用源码及资源。三只源码
博主小站,关注HTML5,脚本开发,收集常用源码及资源。三只源码