SocketErrorCode:10022
? ? 在編寫.net的網(wǎng)絡(luò)服務(wù)器時(shí),我使用了裸socket來實(shí)現(xiàn)。在windows上,或者在linux上通過.net core來跑時(shí)都沒有什么問題,但是通過mono運(yùn)行調(diào)用socket.Bind()時(shí)卻總是報(bào)ErrorCode為10022的SocketException,表示參數(shù)無效。通過命令netstat -a | grep myport并未發(fā)現(xiàn)端口占用現(xiàn)象,擔(dān)心與權(quán)限有關(guān),sudo mono myserver.exe來運(yùn)行也依然如故。后來用TcpListener來實(shí)現(xiàn),這個(gè)問題就沒有了。無奈之下,去瀏覽TcpListener的源碼,發(fā)現(xiàn)其內(nèi)部創(chuàng)建socket是這樣的:
m_ServerSocketEP = new IPEndPoint(localaddr, port); m_ServerSocket = new Socket(m_ServerSocketEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);? ? 再對(duì)比我的代碼,發(fā)現(xiàn)創(chuàng)建socket時(shí)使用的是未指定AddressFamily參數(shù)的構(gòu)造函數(shù)。于是指定參數(shù)為AddressFamily.Network,這個(gè)問題就解決了。應(yīng)該是不同的平臺(tái)實(shí)現(xiàn)在設(shè)置默認(rèn)AddressFamily參數(shù)上有差別導(dǎo)致的。
轉(zhuǎn)載于:https://www.cnblogs.com/Jackie-Snow/p/7470475.html
總結(jié)
以上是生活随笔為你收集整理的SocketErrorCode:10022的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Leedcode][JAVA][第11
- 下一篇: LVS 同网段搭建keeplive+lv