前几篇文章介绍了Http相关的应用,其实从技术角度而言,应该先介绍Socket编程,然后再介绍Http,毕竟Http是用Socket相关函数编程实现的。
.NET Micro Framework的Socket函数和桌面版.NET Framework中的函数完全兼容,换句话说,就是用.NET Micro Framework编写的Socket程序直接用桌面版的.NET Framework进行编译运行是完全没有问题的。但是反之则不一定可以,因为.NET Micro Framework提供的函数是最基本的,去掉了一些实现同样功能的重载函数。
官方示例中包含了SocketServer,我们在《IP地址设定及简单web演示》文章中的示例其实就是在这个官方示例的基础上进行改进的,它用Socket实现了最简单的Web应用,在IE浏览器中访问会出现如下网页。
不过,我们这个示例要比它复杂一些(也是在官方示例的基础上进行功能拓展),用我们PC端编好的Socket客户端程序和它去连接,并进行直接的数据交互,这样就比较容易明了Socket的通信过程了。
为了便于在LCD屏上显示信息,我们需要引用我提供的System.TinyGUI库(当然也可以用WPF技术在LCD屏上显示信息,不过如果你真的要这样去做的话,你会发现好麻烦的),关于System.TinyGUI库,我们在《为Cortex-M3打造轻量级TinyGUI》、《TinyGUI绘图示例》、《TinyGUI位图显示》和《让TinyGUI库支持模拟器》等文章中均有详细的介绍,该库的下载地址:http://www.sky-walker.com.cn/MFRelease/library/System.TinyGUI.rar。
该下载包里含有TinyGUI的示例代码和说明文档,所以我们这里就不多说了。
用Socket建立一个基于Socket的TCP服务器,代码如下(来自于官方示例代码):
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, c_port);
server.Bind(localEndPoint);
server.Listen(Int32.MaxValue);
while (true)
{
// Wait for a client to connect.
Socket clientSocket = server.Accept();
// Process the client request. true means asynchronous.
new ProcessClientRequest(clientSocket, true);
}
我们把官方示例中的如下代码:
// Return a static HTML document to the client.
String s ="HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n<html><head><title>.NET Micro Framework Web Server</title></head>" + "<body><bold><a href=\"http://www.microsoft.com/netmf/\">Learn more about
the .NET Micro Framework by clicking here</a></bold></body></html>";
m_clientSocket.Send(Encoding.UTF8.GetBytes(s));
修改为:
byte[] bytData = new byte[bytesRead];
Array.Copy(buffer, bytData, bytData.Length);
string s = new string(System.Text.UTF8Encoding.UTF8.GetChars(bytData));
System.TinyGUI.Graphics.Print(s); //显示当前接收的数据
m_clientSocket.Send(bytData); //把接收的数据直接返回
此外还要对这个代码加上While循环,否则它就只接收一次数据,就返回了。
好了,对代码进行编译,部署到开发板中并运行。
这里,我们就不现编写TCP client代码了,直接用我已经编写好的工具进行测试即可,下载地址如下:http://www.sky-walker.com.cn/MFRelease/Tools/YFTCPClient.rar。
运行后,我们填写好开发板的地址和端口号,然后和开发板进行通信测试,测试的效果图如下:
可以看到,我们发出什么,则开发板原样返回什么。
开发板LCD屏上,也显示了相应的接收到的数据,如下图:
下一篇文章,我们将介绍Socket之客户端代码的编写。
-------------------------------------------------------------------------------------------------------------------
本文源码:http://www.sky-walker.com.cn/MFRelease/Sample/YFMFSocketServer.rar
MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770
官方网站:http://www.sky-walker.com.cn/
分享到:
相关推荐
esp32开发板esp-mesh wifi组网可行性文档分析
两块STM32,一个做主机一个做从机,能够实现主机发送数据以及主机读取从机数据。通过串口调试,以及LED灯来提示工作状态。
近来有些刚入门的用户,不太了解.NET Micro Framework开发板的使用,所以写了这篇文档,以期缩短用户对开发板的熟悉时间。
mini2440开发板--CMOS摄像头数据手册
与教程--FPGA基础入门【11】开发板USB-UART串口通信配置--相应的源代码。 根目录包含: 1. 相关文档,nexys4ddr_rm.pdf是开发板文档;DS_FT2232H.pdf是UART芯片FT2232HQ文档 2. src/包含所有源代码 3. sim/包含...
.NET Micro Framework开发板原理图(红牛开发板)
这是神舟I号开发板--显示示例,可以正常使用
.NET Micro Framework开发板使用手册(红牛开发板)
STM32_Nano开发板--原理图 很完整 不错,欢迎下载
在正点原子Mini开发板上实现HCSR04超声波测距,亲测可用
北京瑞泰公司 DSP开发板 ICETEK-DM642-PCI_原理图_v1.rar 绝对正确 我发现有一个要10分资源分的 那个是骗人的他用的是TI 的EM
普中STM32-PZ6806L开发板资料光盘结构 | |---1--用户必看 | |--KEIL5安装教程 | |--普中ARM仿真器使用说明 | |--普中PZ6806L开发板入门教程 | |---2--开发板原理图 | |--彩屏原理图-----------------对应...
ALIENTEK MiniSTM32开发板例程-库函数版本
Sifive开发板U-BOOT启动信息和调试
STM32开发板 ATK-RM04 WIFI模块测试实验
4412开发板linux-QT下使用wfi设置.
优龙开发板 YL-E2410A原理图 S3C2410为核心开发板 优龙开发板套件 值得学习 分为核心板CORE;和扩展板 一共两个原理图
s3c6410开发板 u-boot_sd-ram256.bin : 支持SD启动,适用于DDR RAM内存容量为256M的配置
迅为imx6q 开发板 iTOP-iMX6_android6.0.1_20200731 中提取的 uboot-imx,uboot 2015.04 版本