Linux socket accept尽信书不如无书
关于Linux socket 里面的 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)函数,很多书籍都把第三个参数搞错,以为第三个参数用来用来返回addr的类型,所以传个指针进去,却是表面上很像。一般情况下addrlen所指向的地址要是没有初始化(不是addrlen没有初始化,就像socklen_t a;sockelen_t addrlen=&a)都不会出现问题,但是要是你不幸运addrlen所指向的地址里存储的值是负数,那就会出现奇怪的现象,那样真的会很痛苦。所以切记什么事情都不要想当然,要是函数有返回值的,一定要通过返回值来判断函数是否执行成功。下面再贴出Linux 官方关于accept的用法
The addrlen argument is a value-result argument: the caller must ini‐
tialize it to contain the size (in bytes) of the structure pointed to
by addr; on return it will contain the actual size of the peer address.
尽信书不如无书
总结
以上是生活随笔为你收集整理的Linux socket accept尽信书不如无书的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 浏览器中实现3D全景浏览
- 下一篇: 嵌入式linux之go语言开发(三)卡库