在01中我讲到想要解决三个问题,第一个与第二个问题已经解决了,接下来解决第三个问题:App如何通过Socket连接到一个运行在云服务器上正在监听Socket端口的程序,以及如何在连接成功后通过Socket发送命令与接收数据

新建一个Android项目

需要using System.Net;
using System.Net.Sockets;
using System.Threading;

类中定义变量 Socket socket;

private void ButConnectAndSendData_Click(object sender, System.EventArgs e)      //ButConnectAndSendData是一个按钮,单击后过程如下:
         {
             socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             IPAddress ip = IPAddress.Parse("你的云服务器IP");
             IPEndPoint point = new IPEndPoint(ip, 云服务器上运行的程序正在监听的端口);
             socket.Connect(point);   //连接
             
             string msg = txtWantSendData.Text;    //txtWantSendData是一个EditText控件,内容格式通常如下 55AA55AA01A400000B9B16E916E9
             byte[] buffer = new byte[1024 * 1024 * 3];
             buffer = Encoding.UTF8.GetBytes(msg);
             socket.Send(buffer);
             
             Thread.Sleep(1000);   //休眠1秒      这里应该做个循环等待,如果2秒内收到了符合要求的数据,就显示收到的数据,否则提示发送成功了,但是没有收到数据.            byte[] bufferRec = new byte[1024 * 1024 * 3];    //实际接收到的有效字节数
             int len = socket.Receive(bufferRec);
             string str = Encoding.UTF8.GetString(bufferRec, 0, len);
             txtReceivedData.Text = str;                   //txtReceivedData是个TextView控件,用于显示收到的数据.
             
         }

在云服务器放置一个VB6编写的小程序,此小程序主要用于监听某个端口,收到连接请求后就建立一个新连接,在这个新连接中分析收到的命令,如果是符合要求的,就返回合适的数据.当连接断开时,释放资源.

我们的应用场合如下:

多个工业平板计算机在循环检测平板下连接的多种硬件设备状态,检测完毕后就将各种硬件的检测结果放置到变量里.

每个平板连接到一台无线路由器下,带有独立IP地址,同时装有sql server 数据库.

办公室无线路由器通过光纤与现场各个无线路由器相连.

连接到办公室无线路由器的手机将与平板位于同一个ip段,将能够访问平板的sql server数据库,以及通过socket连接到平板监听的端口,这样就可以查看平板中的历史数据,以及获取平板下设备的实时状态.

手机APP先选择想要操作的平板,然后对此平板操作.

 

接下来需要将一台平板与手机连接到一个没有连接宽带的路由器下,准备下一步测试.

 

感想:

随着问题的一步步解决,衷心感谢网络上各位无私提供代码示例的工程师!!!!!

另外,查到的好多资料都提到用Android进行SOCKET连接时需要启动新线程,但是在VS2019中使用C#进行Android连接SOCKET时没有遇到这个问题,感觉实在是太太太方便了.

收获:

以前使用的主要编程语言是VB6,通常都是在VB6无法解决问题的时候使用C++或者C#或者VB.NET做小程序片段配合VB6主程序来解决问题.

经过这些天为了解决问题的学习,我发现C#是一门被我严重低估的语言,它不但可以做桌面C/S开发,居然还可以做Android开发,简直是太奇妙了.

接下来的重点就是*****************认真学习C#语言************.

补充:

买了一本书Visual C#从入门到精通(第9版),非常经典,因为用到的地方不多,所以挑着仔细看了几章 主要是1 2 3 4 5 6 7 10 11章 忽略了类及其他复杂概念,等第一个app学习的差不多了,再返回来阅读剩余部分即可.