在编写.net的网络服务器时,我使用了裸socket来实现。在windows上,或者在linux上通过.net core来跑时都没有什么问题,但是通过mono运行调用socket.Bind()时却总是报ErrorCode为10022的SocketException,表示参数无效。通过命令netstat -a | grep myport并未发现端口占用现象,担心与权限有关,sudo mono myserver.exe来运行也依然如故。后来用TcpListener来实现,这个问题就没有了。无奈之下,去浏览TcpListener的源码,发现其内部创建socket是这样的:

m_ServerSocketEP = new IPEndPoint(localaddr, port);
m_ServerSocket   = new Socket(m_ServerSocketEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

再对比我的代码,发现创建socket时使用的是未指定AddressFamily参数的构造函数。于是指定参数为AddressFamily.Network,这个问题就解决了。应该是不同的平台实现在设置默认AddressFamily参数上有差别导致的。

转载于:https://www.cnblogs.com/Jackie-Snow/p/7470475.html

SocketErrorCode:10022相关推荐

  1. python 基于UDP协议的socket 报错:WinError 10022 提供了一个无效的参数(原因:服务端没有绑定ip)

    如图: 原因: 服务端socket没有绑定ip和端口,绑定一下就好了 udp_server_sock.bind(ip_port) 参考文章:python socket 使用错误:WinError 10 ...

  2. 一个服务器端和多个客户端消息互发_python:OSError: [WinError 10022] 提供了一个无效的参数...

    在使用socket模块进行编程时,如果不注意,很容易就遇到[OSError: [WinError 10022] 提供了一个无效的参数]这个错误.我在网上查阅了资料,通过自己的验证,出现这个错误是因为在 ...

  3. 彻底解决:Apache启动问题—(OS 10022)提供了一个无效的参数。

    今天本地构建PHP环境,装Apache,无论如何也启动不了. 在控制面板的管理工具里面,启动服务也总失败. 提示: --------------------------- 服务 ----------- ...

  4. 用gogs搭建属于自己的git网站

    如果你对docker的操作不太了解, 建议先阅读 从零搭建docker私有仓库 gogs是一款极易搭建的自助 Git 服务, 掌握了它, 我们就可以搭建自己的git服务站点 gogs官网: https ...

  5. html 逗号用什么替换,字符串用javascript数组中的逗号替换“↵”

    var addresses = ["767 5th Ave ↵New York, NY 10153, USA", "677 5th Ave ↵New York, NY 1 ...

  6. 车载以太网之权威指南_awk权威指南之 终结篇!

    前段时间看了一下awk的使用选项,字段变量,标准变量,操作运算符,正则表达式,数组和控制流,并且也附带着一些相关的案例,总的来说,在深入了解和使用AWK之后,还是带来了很多的便利,在处理文本的文件的时 ...

  7. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  8. rsync 同步数据

    -av  常用参数 -l   同步软连接 -L   同步软连接的原文件 目录对目录同步,加"/",同步目录下所有的文件 --delete 强制目标远一致 -u    避免把目标上的 ...

  9. html -%3e 转义,特殊字符html,css转义大全

    使用方法: 这些字符属于unicode字符集,所以,你的文档需要声明为UTF-8: 下面符号列表的后面有两列编号,它们并不太一样,第一列是用于html的,你需要在前面加上符号: 第二列可以用于CSS文 ...

最新文章

  1. [Python爬虫] 之三十:Selenium +phantomjs 利用 pyquery抓取栏目
  2. 过滤器跟拦截器的区别
  3. 2020年12月份学习总结,PMP与信息系统项目管理师的回顾
  4. [2017-2018上 网络工程] 面向对象预习任务
  5. Oracle SQL Developer中进行存储过程调试
  6. 好RESTful API的设计原则
  7. [导入]ASP.NET中上传并读取Excel文件数据
  8. Linux Shell脚本入门教程系列之(十)Shell for循环
  9. 工具的使用——谷歌浏览器(chrome) (二)
  10. delphi csdn论坛技巧收藏贴
  11. MS08_067漏洞复现
  12. graphpad数据小数点_Image J和Graphpad如何对Western Blot条带灰度分析【干货】 | 每日生物评论...
  13. fMRI Tutorial:FSL处理功能核磁共振数据
  14. 鼠标放上去,变成小手状
  15. 把kali装到U盘里
  16. ava使用MyEclipse构建webService简单案例
  17. ant-design官网打不开时,你需要使用以下的镜像地址打开网站
  18. Linux Command
  19. calendar控件使用 extjs_ExtJs定制日历控件——自动加载更新(日历控件显示)
  20. siesta在Linux运行,[求助]Linux下安装Siesta的方法 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

热门文章

  1. xnio java_java基础篇---新I/O技术(NIO)
  2. mysql 列级权限授予用户_mysql 用户及权限管理 小结
  3. 【theano-windows】学习笔记六——theano中的循环函数scan
  4. 乐尚网络:小程序商城零售行业10大新赋能
  5. Linq查询datatable的记录集合
  6. javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象...
  7. 689D Magic Odd Square 奇数幻方
  8. 20145122《Java面向对象程序设计》实验二实验报告
  9. 微信浏览器取消缓存的方法
  10. 【朴灵评注】JavaScript 运行机制详解:再谈Event Loop