【计算机网络|Socket】套接字Socket:Talk is cheap, show me the code

关注点:基于TCP和UDP的Socket编程

1. 基于TCP协议的Socket程序调用过程

注意: 监听Socket和传数据的Socket是两个,一个是监听Socket,一个是已连接Socket

2. 基于UDP协议的Socket程序函数调用过程

 

注意:UDP 是没有维护连接状态的,因而不需要每对连接建立一组 Socket,而是只要有一个 Socket,就能够和多个客户端通信 

3. 如何连更多?

3.1 方式一:将项目外包给其他公司(多进程方式)

特点:Linux下用fork创建子进程,会拷贝文件描述符列表,也会复制内存空间,占用资源多

3.2 方式二:将项目转包给独立的项目组(多线程方式)

特点:更加轻量级,Linux用Posix线程库的话可以用pthread_create

3.3 方式三:一个项目组支撑多个项目(IO多路复用,一个线程维护多个Socket)

特点:某个线程紧盯所有的Socket,都放在一个文件描述符fd_set中

C10K: 它的意思是一台机器要维护 1 万个连接,就要创建 1 万个进程或者线程,那么操作系统是无法承受的。如果维持 1 亿用户在线需要 10 万台服务器,成本也太高了。

3.4 方式四:一个项目组支撑多个项目(IO多路复用,从“派人盯着”到“有事通知”)

特点:epoll,注册callback ,解决C10K的利器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值