`
CanBeatle
  • 浏览: 166841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Socket

    博客分类:
  • C++
阅读更多

   套接字接口适用于任意的底层协议,一般是基于TCP/IP。

套接字接口

                                                                                  套接字接口

socket函数
      客户端和服务器使用Socket函数来创建一个套接字描述符:
      int socket(int domain, int type, int protocol),若成功则返回非负描述符,否则-1。
一般这样调用:clientfd = Socket(AF_INET, SOCK_STREAM, 0), 其中AF_INET表明正在使用因特网,SOCK_STREAM表示套接字是因特网连接的端点,socket返回的clientfd仅是部分打开,并且不能用于读写。

connect函数
      int connect(int socketfd, struct sockaddr * serv_addr, int addlen),成功返回0,否则返回-1。
      Connect函数试图与地址为serv_addr的服务器建立一个因特网连接,addlen是sizeof(socketaddr_in).Connect函数会阻塞,一直到连接成功建立或发生错误,如果成功,sockfd现在就准备好读写了,得到的连接是由套接字对:(x:y, serv_addr.sin_addr:serv_addr.sin_port)刻画的,x表示客户端的ip,y表示临时端口。


bind函数
      int bind(int sockfd, struct sockaddr * my_addr, int addrlen)。若成功返回0,出错则返回-1。
      bind函数告诉内核将my_addr中的服务器套接字地址和套接字描述符sockfd联系起来,参数addrlen就是sizeof(sockaddr_in)。


listen函数

      客户端是发起连接请求的主动实体,服务器是等待来自客户端的连接请求的被动实体,默认情况下,内核会认为socket函数创建的描述符对应于主动套接字,它存在于一个连接的客户端。服务器调用listen函数告诉内核,描述符是被服务器而不是客户端使用的。
      int listen(int sockfd, int backlog),成功返回0,否则返回-1。
      listen函数将sockfd从一个主动套接字转化为一个监听套接字,该套接字可以接受来自客户端的连接请求。backlog参数暗示内核在开始拒绝连接请求之前,应该放入队列中的未完成连接请求的数量。

 

accept函数
      int accept(int listenfd, struct sockaddr * addr, int * addrlen),成功返回非负描述符,出错则为-1。
      accept函数等待来自客户端的连接请求到达监听符listenfd,然后在addr中填写客户端的套接字地址,并返回一个已连接描述符,这个描述符可被用来利用Unix I/O函数与客户端通信。

 

监听描述符和已连接描述符
    之所以区分这两种描述符,是因为它使得我们可以建立并发服务器。例如:每当一个连接请求到达监听描述符时,我们可以派生(fork)一个新的进程,通过它的已连接描述符与客户端通信。
监听描述符和已连接描述符

  • 大小: 16 KB
  • 大小: 17.3 KB
分享到:
评论

相关推荐

    socket概念socket概念socket概念

    socket概念socket概念socket概念

    SocketTool(很好用的socket测试工具)

    SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。 它可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。 是一款非常好用...

    TCP/UDP socket 调试工具

    TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...

    HP-Socket5.3.2

    HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端...HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中

    HPSocket C++控制台版DEMO.rar

    一个开源的高性能IOCP(完成端口)网络通信封装框架《HP-Socket》的使用实例,官方的DEMO只有MFC对话框的版本,对于刚接触这个框架的新手不太容易把代码移植到自己的项目。 此DEMO使用标准C++控制台来实现,对于刚...

    SuperSocket Socket C# 通讯详细介绍

    SuperSocket Socket C# 通讯详细介绍,不错的 Socket,学习很有用处SuperSocket Socket 技能

    基于vue3+socket.io的聊天应用,比较完整,略好看.zip

    基于vue3+socket.io的聊天应用,比较完整,略好看 基于vue3+socket.io的聊天应用,比较完整,略好看 基于vue3+socket.io的聊天应用,比较完整,略好看 基于vue3+socket.io的聊天应用,比较完整,略好看 基于vue3...

    c#超级Socket库SuperSocket,SOCKET多线程编程

    c#超级Socket库SuperSocket,SOCKET多线程编程

    SpringBoot实现Socket.io消息推送(java+html)

    因为项目中需要实现后端推荐消息到前端,经过研究和讨论,最终决定用Socket.io实现消息的推送,而在SpringBoot用Socket.io实现消息推送在网上的例子太少了,本人研究了一天的Socket.io,终于对Socket.io的应用比较...

    Android TCP Socket通信实例Demo源码Apk下载

    最近有个项目模块需要用到TCP Socket通讯,遇到了一个大坑,所以做了这个Demo。 本Demo主要实现了安卓(Android)TCP 客户端(Client)和服务器(Server)Demo的Socket通讯。以及对接硬件的项目数据在十六进制&&byte&&int...

    socket调试工具 socketTool

    sokit socket调试 tcp udp for mac

    使用socket和DTU通信.doc

    为了方便网络编程,90年代初,由microsoft联合了...socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个socket接口来实现。

    SuperSocket-master_Socket基于TCP、UDP

    SuperSocket-master_Socket 、Socket、SuperSocket、TCP、UDP

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    C# 版socket 收发TCP协议有模版样例

    9772.zip_mql_mql4 socket_socket

    socket功能,在mql中是用socket套接字

    C++用win socket api实现的简单的聊天室程序

    为实现多用户聊天,采用了服务器端分发线程处理,主线程阻塞接受客户端socket, 每接收一个socket连接就分发一个线程处理,通过全局变量保存所有客户socket 连接,在每个处理线程中通过客户socket 连接池中每个客户...

    目前.NET最强SOCKET框架组“北风之神”(ZYSOCKET) 3.0 源代码

    传统的SOCKET? 我告诉你 你OUT了 因为现在开始你要使用 “北风之神”了 你还在为组合数据包 头痛吗? 你还在为性能不达标 烦恼吗? 现在不必了,因为 使用我的 吹着北风 而构思出来 的SOCKET框架 一切问题映刃...

    C Socket通信多线程数据双向收发实例VS2010(全部源码)

    最新的C C++Socket技术总结! 开发环境:VS2010 实现功能: 1、运用多线程和Socket技术实现Socket Server端侦听多个客户端请求; 2、实现服务器端循环处理客户端不同请求从而实现不同测试要求,并向客户端循环发送...

    基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。.zip

    基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 ...

Global site tag (gtag.js) - Google Analytics