有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java永久性地使用socket来处理Clientsession或为每个请求创建新的会话

所以我对Sockets很陌生,我必须为学校创建一个服务器客户端应用程序

我希望客户机在运行时多次从服务器请求某些内容

我不确定我是否应该做一个新的java。网我收到的每个请求的socket(客户端每次打开新socket,Java Serversocket接受) 或者使用一个socket,并在客户端运行时保留该socket


共 (2) 个答案

  1. # 1 楼答案

    关于这个问题:

    Maximum number of socket in java

    如果您担心超过可以打开的套接字的最大数量(我想在您的情况下,这是非常不可能的),您可以创建一个解决方案,使用TCP最初建立连接,向客户端发送UID(唯一标识符,64位unsigned long long类型应该足够),然后关闭TCP连接。填写并维护一个结构(或类对象),详细说明连接细节(IP地址、唯一标识符代码),然后等待通过UDP(用户数据报协议,TCP的替代协议)发送的数据包到达。如果您决定使用UDP,请注意,您需要实现一种对数据包进行重新排序的方法,以便重建字节流(序列化)和一种在数据包无法到达时重新发送数据包的机制(数据包丢失恢复)

    听起来比现在更糟。不过我要重复一次,如果你不担心超出任何限制,就不要为这些复杂的问题而烦恼

  2. # 2 楼答案

    这在很大程度上取决于插座的使用频率。 例如,如果您知道客户端将每隔50毫秒向服务器发送一个请求,那么只需保持套接字打开就更容易了。 但是,如果您知道客户端每5分钟只会从套接字请求一次信息,那么最好关闭连接,并在需要时创建一个新的连接。如果您不知道下一个请求将在何时创建,则相同

    在服务器端创建一个新的套接字并不十分昂贵,因此如果不经常使用,最好关闭连接。 一个例外可能是一个特殊的套接字,它在创建时需要身份验证或其他昂贵的东西,但在学校项目中可能不是这样

    一般来说:这取决于插座的使用情况,但如果你不确定它是否经常使用,最好在需要时关闭它并再次打开