Xamarin相关的socket网络编程案例以及坑

socket网络通讯,一些基础知识还是要知道的

比如三次握手啊,不看都不知道自己为什么错了

 

先贴一些收藏的教程页,以后还要复习的

 

1.C# TCP/IP协议利用Socket的简单通讯

http://www.360doc.cn/mip/973762986.html

 

2.Tcpclient简单聊天程序

https://blog.csdn.net/henuhaigang/article/details/8160196

 

3.C# tcpClient发送和接收

https://blog.csdn.net/qq_27508477/article/details/87182360

 

 4.多线程InvokeRequired和Invoke的用法

https://www.cnblogs.com/schyzhkj/p/13273039.html

 

 

坑1:

不得不说,微软的Xamarin的确是个好东西,可惜不是完美的

.net的框架经过多少代人的迭代,已经很难找的完全解决不了的问题了

而Xamarin不同,先说简单的

UWP里的socket有问题,相同的服务器端代码放在windows窗口应用里就完美,放到UWP里就死活连接不上

 

坑2:

新创建的线程不能访问UI线程上的控件

遇到这种情况只能使用Device.beginInvoke把要执行的动作放到主线程去执行

这个方法可以解决很多问题,但是在调试的时候会不知道什么时候执行

可以看看第4个链接

 

坑3:

在Xamarin里声明共用体(联合体),在接受客户端的流之后,把流转换成结构体

注意的是,如果共用体里含有数组,小心,你会在之后引用数组的时候出错

个人觉得是可以解决的,但至今没找到方法

详细问题可以看我的提问:https://ask.csdn.net/questions/7485932?spm=1001.2014.3001.5501

 

坑4:

Xamarin里面不能直接引用Dll(ps:从本质上来看,其实是可以的)

需要把Dll放进共享项目里,然后进行编译和打包,生成nuget包,然后再通过nuget包管理器引入其他项目

如果你在引用的项目里看引入的程序集的话,会发现就包含那个Dll(废话!但也侧面证明了其实是可以直接引用Dll的)

这个东西微软官方虽然手把手的教了,但个人建议看看大致流程就行

MS地址:https://docs.microsoft.com/zh-cn/xamarin/cross-platform/cpp/

想找例子的话建议百度,关键字“C++”和“Xamarin”

这里有个不错的例子:https://blog.csdn.net/kinfey/article/details/45370463

 

如果有人踩坑了记得评论一下啊,帮后来人跳过这个坑

posted @ 2021-08-02 21:55  陈曦之光  阅读(756)  评论(0)    收藏  举报