博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket的相关操作
阅读量:6606 次
发布时间:2019-06-24

本文共 971 字,大约阅读时间需要 3 分钟。

1.创建socket:所有的东西在UNIX都是文件socket系统调用可创建一个socketint socket  (int domain,  int  type,  int  protocol);domain:告诉系统使用那个底层协议族type:指定服务类型1.1服务类型有SOCK_STREAM和SOCK_UGRAM(数据报)1.内核在2.16.17开始,type可以接逻辑与的参数SOCK_NONBLOCK和SOCK_CLOEXEC来表示soocket是否非阻塞1.3protocol参数在前两个参数的下,在选择一个具体的协议调用结果:返回一个socket文件描述符,失败返回-1并且设置errno2.命名socket创建的时候,我们只是指定了地址族,但是未指定使用具体的那个socket地址讲一个socket与socket地址绑定称为socket命名服务器需要命名socket,客户端不需要2.1int bind(int sockfd,const  struct  sockaddr * my_addr,socklen_t addrlen);

bind 成功返回0,失败返回-1并设置errno

2.2 常见的失败有EACCES:被绑定的地址是受保护的,仅仅是超级用户可以访问
EADDRINUSE:被绑定的地址正在使用

3.监听socket、

创建和命名后,是不能直接被客户端访问,需要创建一个监听队列来存放待处理的客户连接

3.1 int listen(int sockfd, int backlog);

backlog参数提示内核监听队列的最大长度

超过之后,就不再受理客户连接

错误消息是ECONNREFUSED

listen唱功返回0,失败返回-1并且设置errno

完整的连接只是backlog+1 个

4.接受连接

int accept(int sockfd,struct sockaddr addr,socklen_t addrlen)

问题:如果有个客户端请求出现网络异常或者掉线,会怎样?

答案:accept只是从监听队列取出来连接,不论连接出于什么状态,更不会关心网络变化

本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/2067471

转载地址:http://npbso.baihongyu.com/

你可能感兴趣的文章
EVCache —— Netflix 的分布式内存数据存储
查看>>
《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
查看>>
《Node.js区块链开发》一3.6 总结
查看>>
《CCNP TSHOOT 300-135学习指南》——2.1节故障检测与排除方法及流程
查看>>
《UG NX8.0中文版完全自学手册》一2.8 布尔运算
查看>>
pera 发布新概念浏览器 Neon ,内置分屏模式
查看>>
移动阅读时代“长文章”生存状态调查
查看>>
《深入理解JavaScript》——1.7 运算符
查看>>
springboot docker笔记
查看>>
跟我一起学QT3:电子表格的制作
查看>>
mysql char和varchar区别
查看>>
Modbus RTU 通信工具设计
查看>>
服务化改造实践 | 如何在 Dubbo 中支持 REST
查看>>
Memcached的备份负载
查看>>
快速预览Office 15服务端:Exchange 2013
查看>>
echo(),print(),print_r()三者的区别
查看>>
Mac上面Docker构建镜像时超时
查看>>
Logwatch linux日志监视器解析
查看>>
【第8章】JVM内存管理
查看>>
easyui datagrid plunges 扩展 插件
查看>>