zoukankan      html  css  js  c++  java
  • 基本TCP套接口编程

    1、使用的函数:socket、concect、bind、listen、accept;

    2、bind函数把一个本地协议地址赋给一个套接口,进程可以把一个特定的IP地址捆绑到它的套接口上,不过这个IP地址必须属于其所在的主机的网络接口之一,对于TCP客户,这就为在该接口上发送的IP数据报指定了源IP地址,对于TCP服务器,这就限定该套接口只接受那些的目的地为这个IP地址的客户连接。
    TCP客户通常不把IP地址捆绑到它的套接口上,当连接套接口时内核将根据所用外出网络接口来选择IP地址,而所用外出接口则取决于到达服务器所需要的路径。
    如果TCP服务器没有把IP地址捆绑到它的套接口上,内核就把客户发送的SYN的宿IP地址作为服务器的源IP地址。即服务器捆绑统配地址(INADDR_ANY),则等待listen状态,等待连接,一旦建立连接,则内核设定连接的IP,若服务器捆绑了IP地址的话,则只能接受这个特定的IP的连接。
    3、
    #include<sys/socket.h>
    int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen)
    int getpeername(int sockfd, sreuct sockaddr *peeraddr,socklen_t addrlen)
    /*这两个函数或者返回与某个套接口关联的本地协议地址(getsockname),或者返回与某个套接口关联的远地协议地址。
    这两个函数的最后一个参数都是值--结果参数,这就是说,这两个函数都得装填由localaddr或者peeraddr指针所致的套接口地址结构。*/

     4、readn/writen和recv/send函数的区别

    1、recvsend函数提供了和readwrite差不多的功能但是他们提供了第四个参数来控制读写操作.

    int recv(int sockfd,void *buf,int len,int flags)

    int send(int sockfd,void *buf,int len,int flags)

        前面的三个参数和read,write相同第四个参数能够是0或是以下的组合

    _______________________________________________________________

    | MSG_DONTROUTE | 不查找路由表 |

    | MSG_OOB | 接受或发送带外数据 |

    | MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 |

    | MSG_WAITALL | 等待任何数据 |

    |————————————————————–|

        如果flags0则和read,write一样的操作。

    2、在unix中,所有的设备都可以看成是一个文件,所以我们可以用read来读取socket数据。

     

    更多嵌入式linux及编程学习交流的文章,请访问我的个人网站”恩享网” :http://www.enxiang.icoc.cc,期待与您共同进步。

  • 相关阅读:
    OSI七层模型详解 TCP/IP协议
    ZT 第一范式,第二范式,第三范式
    思杰20140522
    Correspondence / ˏkɔris'pɔndәns / dictionary10-800.doc
    闲着没事,贴贴图
    心情闲适,发几个tatanic的图
    005 Python 基础特性
    017 虚拟内存 64位及内存对其 3
    004 Python 文件操作 字典 自定义函数
    003 Python list 索引
  • 原文地址:https://www.cnblogs.com/LJTbozai/p/3062936.html
Copyright © 2011-2022 走看看