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,期待与您共同进步。

  • 相关阅读:
    Qt为啥从4.8直接就跳到5.3了呢?这不科学吧
    一段程序的人生 第10章: server
    项目记录23--unity-tolua框架MediatorManager
    Raft 为什么是更易理解的分布式一致性算法
    Caused by: java.lang.UnsatisfiedLinkError: Couldn&#39;t load BaiduMapVOS_v2_1_3: findLibrary returned nu
    Apache OFBIZ高速上手(二)--MVC框架
    Eclipse 导入逆向工程
    mysql 报错从 新安装
    maven项目创建4
    maven报错
  • 原文地址:https://www.cnblogs.com/LJTbozai/p/3062936.html
Copyright © 2011-2022 走看看