zoukankan      html  css  js  c++  java
  • 《网络编程 — 服务器中bind的ip地址是什么》

    所谓bind,就是指绑定本地接受端口。
    指定ip,是为了分辨多ip主机。
    bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。
    如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。

    在linux内核中,一个socket有两个地址,一个本地地址,一个外部连接地址,。

    如果使用udp协议,
    在调用bind函数时,会把你要绑定的那个地址填到socket的本地地址那块地方.你要设成0.0.0.0它就给你填成0.0.0.0
    在udp使用bind函数只是为了不用每此发送数据都填充地址这一参数传递过程而已.
    只是在你发送数据时才会根据情况把实际的ip地址填到发送的数据的相应位置.
    在内核接收到一个数据包时,会接收到一个外部地址,在你调用读函数时就把此地址读取走了.


    如过使用tcp协议时,
    在调用bind函数时,会把本地地址填到socket的本地地址那块地方.
    在调用connect或则调用accecpt接收到连接时,回把外部地址那块填上.。在读写数据时,只读走数据,不会去读去地址的。
    所以在tcp协议下,想通过recvfrom,sendto(一般用于无连接的套接字)去获取到外部连接的地址,是获取不到的,你得到的结果可能是0.0.0.0,可以再accpet之后获取到。

  • 相关阅读:
    继续Delphi调用Wcf
    我用 Windows Live Writer 写随笔
    "WCF 服务编程"刚到,第一印象,内纸张很差
    我的asp.net网站小项目,体现了我学习的几个阶段,现在学习到WCF阶段
    菜单设计
    求圆的面积
    dataGridView 批量更新
    Android简单实现对话框
    dephi 程序输入法中英文自动切换实现
    Delphi捕捉DLL执行所抛出的异常。(转)
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/11976052.html
Copyright © 2011-2022 走看看