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

Java NIO构造——socketchannel和socketserverchannel在内部是如何工作的?

宁修永
2023-03-14

我有一些关于socketchannel和socketserverchannel如何工作的具体问题:-

>

ServerSocketChannel socket=ServerSocketChannel。open();

socket.bind(new InetSocketAddress("localhost",1111));

... ..

SocketChannel acceptedSocket=socket。接受();

客户端代码非常简单(请参考下面的代码)。

SocketChannel client=SocketChannel。打开(新的InetSocketAddress(“localhost”,1111))//初始化缓冲区

client.write(缓冲区);

现在,该客户端正在尝试连接到端口1111。客户端如何确定它被重定向到的端口?它如何知道写入操作必须发生在服务器选择的其他端口上?

共有1个答案

闻人花蜂
2023-03-14

原来我理解错了。当连接被接受时,不会创建新端口,而是为同一端口创建新的套接字描述符。在服务器上为每个客户机创建不同的套接字描述符,与该客户机的所有交互都是通过该描述符进行的。这允许服务器并行处理多个客户端。

 类似资料:
  • 问题内容: 我正在阅读有关Java中并发性的Oracle官方文档,但我想知道返回的返回值之间可能有什么区别? 并使用例如 。我假设我用一个。我知道,一般而言,同步集合对于我来说只是一个装饰器,因此很明显a 的内部结构有所不同。您是否有关于这些实施细节的信息? 编辑:我意识到源代码是公开可用的: ConcurrentHashMap.java 问题答案: 我会阅读ConcurrentHashMap的源

  • 问题内容: 我正在使用Eclipse服务器功能进行热代码部署。使用tomcat作为Web服务器。但是我不确定它是如何工作的。我有自己的理解,它必须如何在内部工作。 我的理解:- 当开发人员更改代码(例如,类Employee)时,Eclipse将在正确的位置(必须是特定的Web /应用服务器,将其称为热部署目录(HDD))放置/发布修改后的已编译类。 。现在将显示Web服务器特定的类加载器。它在HD

  • 我注意到在Dart中可以创建一个const构造函数。在文档中,它说< code>const一词用于表示编译时常数。 我想知道当我使用构造函数创建对象时会发生什么。这是否像一个不可变对象,它总是相同的并且在编译时可用?构造函数的概念实际上是如何工作的?const构造函数与常规构造函数有何不同?

  • 问题内容: 该功能在内部如何工作?考虑到内核确实具有访问用户内存空间的特权,它是否使用任何缓冲区还是完成了任何内存映射? 问题答案: 的实现高度依赖于体系结构。 在x86和x86-64上,它只是直接从用户空间地址进行读取并写入内核空间地址,同时如果已配置,则暂时禁用SMAP(超级用户模式访问阻止)。它的棘手部分是将代码放置在特殊区域中,以便页面错误处理程序可以识别其中何时发生错误。发生的内存保护错

  • 问题内容: “现代” 守护程序如何在 内部 安排作业?有些人经常通过来安排一次跑步。因此,在写出crontab之后,会执行以下操作: 解析crontab以了解所有将来的事件,并hibernate间隔时间? 每分钟轮询一次汇总的crontab数据库,以确定当前时间是否与计划模式匹配? 其他? 谢谢, 问题答案: 在这个问题上听到了几声。不错的RTFC,其中包含一些离散事件模拟论文和Wikipedia

  • 我有两个类:Date和Person Person有Date类的两个属性 案例1 类是与Person类分开的类。我有这段代码正常工作: 案例2:内部类(赋值要求) 我把作为Person的私有内部类 现在,上面的构造函数代码不再工作了。以下是错误消息: 说明资源路径位置类型由于某些中间构造函数调用人员,类型Person的封闭实例不可用。java/Wk03_Ch10_文件IO_Ch13_接口/Wk03_