IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    socket编程中如何区分不同的网络连接

    admin发表于 2011-05-25 03:38:18
    love 0

    在网络编程中,服务器程序的代码结构一般如下:

    socket() -> bind() -> listen() -> accept()

    当有一个新的客户端连接时,accept建立一个新的socket,然后将sockfd返回,接下来数据的发送和接收就都在这个sockfd中进行

    但是一直有一个问题我比较困惑:在服务器端,当有数据到达时,协议栈是如何将数据传递到正确的sockfd的呢(服务器端存在多个已连接的客户端)?因为不同的网络连接是使用同一个监听端口,如80端口,不可能为每一个建立的连接分配一个端口(事实也不是这样);

    上网搜寻一下,一个比较合理的解释:使用网络连接的源ip+源port来区分不同的数据连接,本身TCP协议中提供,而且可以唯一标识网络连接,因为不可能同一个客户端使用同一个端口进行来连接server的。

    最多留言日志

    • 利用War-Ftpd的漏洞深入解析缓冲去溢出
    • 修改wordpress最新评论的显示样式
    • jquery ajax 提交checkbox数组的方法
    • 关于我
    • 程序员眼中的编程语言


沪ICP备19023445号-2号
友情链接