美文网首页
即时通讯

即时通讯

作者: 程序萌 | 来源:发表于2018-05-18 14:49 被阅读0次

传输控制协议(TCP)

  • TCP 为什么要进行3次握手?
    TCP的三次握手最主要是防止已过期的连接会再次传到被连接的主机;
    如果采用两次的话,会出现下面这种情况。
    比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
    于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
    传完东西后,断开。
    结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
  • TCP工作原理
    TCP的连接建立过程又称为TCP三次握手;
    首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;
    接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;
    发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立.
    一旦初始的三次握手完成,在发送和接收主机之间将按顺序发送和确认段。关闭连接之前,TCP使用类似的握手过程验证两个主机是否都完成发送和接收全部数据。
    完成三次握手,客户端与服务器开始传送数据。

用nc来测试连接
客户端 nc 127.0.0.1 3000
服务端 nc -l 3000

socket:对应一个IP一个端口进行点对点通讯

1.  导入头文件
#import <sys/socket.h> //socket相关
#import <netinet/in.h>  //internet相关
#import <arpa/inet.h>   //地址解析协议相关
2. socket(创建)
     int socket(int, int, int);
    /**
     参数
     第一个int:domain:    协议域,AF_INET(IPV4的网络开发)
     第二个int:type:      Socket 类型,  SOCK_STREAM(TCP)/SOCK_DGRAM(UDP,报文)
     第三个int:protocol:  IPPROTO_TCP,协议,如果输入0,可以根据第二个参数,自动选择协议
     返回值
     socket,如果 > 0 就表示成功
     */
3. connection (连接到“服务器)
    connect(int, const struct sockaddr *, socklen_t)
    /**
     参数
     1> 客户端socket
     2> 指向数据结构sockaddr的指针,其中包括目的端口和IP地址
        服务器的"结构体"地址,C语言没有对象
     3> 结构体数据长度
     返回值
     0 成功/其他 错误代号
     */
4. write(发送数据)
    send(int, const void *, size_t, int)
    /**
     参数
     1> 客户端socket
     2> 发送内容地址 void * == id
     3> 发送内容长度
     4> 发送方式标志,一般为0
     返回值
     如果成功,则返回发送的字节数,失败则返回SOCKET_ERROR
      */
5. read (接收)
    recv(int, void *, size_t, int)
    /**
     参数
     第一个int :创建的socket
     void *:接收内容的地址
     size_t:接收内容的长度
     第二个int.:接收数据的标记 0,就是阻塞式,一直等待服务器的数据 
     返回值
     接收到的数据长度
     */
6. close
    close(int);
    int:就是创建的socket

相关文章

  • 一些即时通讯的小总结

    一:即时通讯 1. 即时通讯简介 即时通讯英文名为:Instant Messaging,简称IM。 即时通讯(In...

  • 即时通讯:XMPP项目实践-微聊

    即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习...

  • 即时通讯基础

    即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习...

  • 即时通讯:XMPP基础

    即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习...

  • Smack类库最好的学习资料

    即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习...

  • 环信(XMPP)

    一、即时通讯 什么是即时通讯? 即时通讯,又称实时通讯 即时通信(Instant Messaging,简称IM)是...

  • 【iOS分享之路-即时通讯】一、即时通讯介绍

    1. 即时通讯简介 即时通讯英文名为:Instant Messaging,简称IM。 即时通讯(Instant m...

  • 即时通讯(三)

    一、即时通讯简述 1、即时通讯,又称实时通讯2、即时通讯(Instant MessageIng,简称IM) 是一个...

  • 音视频开发资源汇总

    即时通讯网 即时通讯音视频开发 系列文章: 即时通讯音视频开发(一):视频编解码之理论概述即时通讯音视频开发(二)...

  • 即时通讯

    即时通讯 什么是即时通讯? 即时通讯,又称实时通讯 即时通信(Instant Messaging,简称IM)是一个...

网友评论

      本文标题:即时通讯

      本文链接:https://www.haomeiwen.com/subject/asygdftx.html