8.1.1 配置 Socket 服务器

BSD Socket 服务器必须通过调用 bind(int socketFileDescriptor, sockaddr *addressToBind, int addressStructLength) 与具有唯一地址的 Socket 关联. 它会接收一个 Socket 并将其分配或是绑定到某个特定的地址与端口. 绑定成功返回 0, 否则返回 -1. 绑定 Socket 后, 接下来的步骤取决于你在 socket() 调用中指定的连接类型, 即 UDP 或 TCP:

- 对于 UDP Socket 来说, 现在就可以开始向外界传输数据了, 因为 UDP 是个无连接的协议, 不需要在另一端监听

- TCP Socket 是个面向连接的协议, 需要在 Socket 的另一端有参与者. 要想建立 TCP 连接, 你需要调用 listen(int socketFileDescriptor, int backlogSize) 以建立好缓冲区队列的数据结构

作为第一个参数传递进去的 Socket 会成为只读 Socket, 不能用于发送消息. backlogSize 表示有多少个挂起的连接在排队的同时等待服务端代码的使用.  在监听时, 服务器会等待进来的连接请求并调用 accept(int socketFielDescriptor, sockaddr *clientAddress, int clientAddressStructLength)来接收请求. 这会将挂起的请求从缓冲队列中移除, 并使用客户端的地址信息(最主要的是 IP 地址与端口)来装配 clientAddress 结构体. 接受了挂起的请求后, 服务器就可以从客户端接收消息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、网络各个协议:TCP/IP、SOCKET、HTTP等 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    杯水救车薪阅读 6,745评论 0 17
  • 研究IPv6 socket编程原因: Supporting IPv6 in iOS 9 WWDC2015苹果宣布在...
    li大鹏阅读 12,119评论 7 15
  • 什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Inter...
    liuboxx1阅读 4,531评论 0 1
  • socket通信原理 socket又被叫做套接字,它就像连接到两端的插座孔一样,通过建立管道,将两个不同的进程之间...
    jiodg45阅读 4,850评论 0 1
  • 每天坚持做自己有多难?每天坚持做自己喜欢的事情又有多难?每天坚持做自己真正向往的样子更是何其的不容易?你能...
    紫燕冰凝阅读 3,532评论 0 0