当前位置: 首页 > 知识库问答 >
问题:

客户端如何知道子TCP进程正在使用的临时端口?

咸承教
2023-03-14

在阅读TCP的工作原理时,我读了很多书,其中提到在客户端连接到服务器后,套接字程序员应该调用accept(),以接受来自客户端的连接。然后,父TCP服务器进程(在端口上侦听,比如说80)调用一个fork(),并将创建一个子进程,该子进程将继续与客户端通信。子进程显然必须绑定到另一个临时端口才能与客户端通信。我的问题是,一旦子进程分叉,客户端如何知道将数据发送到哪个端口以便进行通信?侦听端口80的父TCP进程是否将其传输给客户端?

共有1个答案

柳珂
2023-03-14

Hiw客户端是否知道子TCP进程正在使用的临时端口?

没有临时端口需要知道。客户端只是继续使用它连接到的相同目标端口。

子进程显然必须绑定到另一个临时端口才能与客户端通信。

不。客户端进程继承接受的套接字,该套接字绑定到与侦听套接字相同的本地端口。

我的问题是,一旦子进程分叉,客户端如何知道将数据发送到哪个端口以便进行通信?

它通过其连接的同一端口进行通信。

侦听端口80的父TCP进程是否将其传达给客户端?

客户端通过FD继承机制继承套接字。

 类似资料:
  • tcp 客户端例程 tcp 客户端例程 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:tcp 客户端 * * 这是一个 tcp 客户端的例程 *

  • Coroutine\Client提供了TCP、UDP、unixSocket传输协议的Socket客户端封装代码,使用时仅需new Swoole\Coroutine\Client即可。 实现原理 Coroutine\Client的所有涉及网络请求的方法,Swoole都会进行协程调度,业务层无需感知 使用方法和Client同步模式方法完全一致 connect超时设置同时作用于Connect和Recv、

  • 问题是:在java中,您可以使用ServerSocket(0)在服务器上创建一个套接字,它会选择一个随机端口进行监听。但是,当您在客户机上创建套接字以使用套接字(addr,port)发送消息时,显然无法确定您需要发送到服务器上的哪个端口。除了基本的“如果你输入0,它将选择一个随机端口”之外,我在网络搜索中找不到关于这个选项的任何信息。是否有人知道或拥有可以从客户端解释这个场景应该是什么样子的资源?

  • 当我在客户端使用下一段代码时: 我得到一个例外,它只允许使用单个套接字地址。但在服务器端我使用: 我需要编写一个客户端,可以在同一端口的TCP和UDP协议上工作。TCP-通用命令,UDP-语音流。如何做到这一点?

  • 提示 视频 PPT 下载 背景介绍 socket 编程一般采用客户端-服务器模式,即由客户进程向服务器进程发出请求,服务器进程执行请求的任务并将执行结果返回给客户进程的模式。 本教程介绍了如何编写一个基于 socket 编程实现的 TCP 客户端。我们先将 socket 编程的流程列出来,然后给出具体的实例。 TCP 客户端的 socket 编程流程 1. 创建 socket 2. 建立连接 3.

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我