gpt4 book ai didi

sockets - Java NIO如何构造-socketchannel和socketserverchannel在内部工作?

转载 作者:行者123 更新时间:2023-12-03 12:07:16 24 4
gpt4 key购买 nike

我有一些与socketchannel和socketserverchannel的工作方式有关的特定问题:

  • 当ServerSocketChannel接受连接时(请参阅下面的代码),我的理解是它将客户端以某种方式移动到新的随机选择的端口。这样对吗?有没有办法从范围中选择此端口?我之所以问是因为,当我将这样的服务器编写并部署到VM时,我只希望将一组端口列入白名单。如果可以通过accept()调用选择任何随机端口,如何实现呢?我不必打开所有端口吗?
    ServerSocketChannel套接字= ServerSocketChannel.open();
    socket.bind(new InetSocketAddress(“localhost”,1111));
    ...
    ..
    SocketChannel接受的Socket = socket.accept();
  • 客户端代码非常简单(请引用下面的代码)。
    SocketChannel client = SocketChannel.open(new InetSocketAddress(“localhost”,1111));
    .....//初始化缓冲区
    client.write(buffer);

  • 现在,该客户端正尝试连接到端口1111。客户端如何确定已将其重定向到哪个端口?如何知道写操作必须在服务器选择的其他端口上进行?

    最佳答案

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

    关于sockets - Java NIO如何构造-socketchannel和socketserverchannel在内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65597482/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com