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
如果有人踩坑了记得评论一下啊,帮后来人跳过这个坑

浙公网安备 33010602011771号