gpt4 book ai didi

java - 是打开不同的端口更好,还是打开一个带有标识符的端口更好(或者其他)?

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

我正在编写一个系统,其中有三个不同的 java 应用程序通过 TCP-IP 相互交互。其中两个应用程序通过 ServerSocket 与另一个应用程序(称为 Directory)连接。
其中一个应用程序与其连接只是为了登录并添加到列表中,而另一个应用程序与其连接只是为了请求列表或发送消息。
这些连接都是通过Directory的ServerSocket中的同一端口完成的,与Directory连接的应用程序通过套接字发送一个字符串,并执行某种任务 -标识符打在前面,目录然后处理它以了解它必须做什么。
这种读取标识符字符串的方法可以吗?它是否高效、可维护,还是应该以其他方式完成?例如拥有针对不同类型客户端的不同端口的 ServerSocket,或者针对不同功能的不同端口。目前提到的功能是唯一的,但可能会添加更多功能,所以我想知道这是否是一个可行的实现。

public class Directory {
private ServerSocket server;
public Directory() {
super();
}

public void openServer(int port) throws IOException {
new Thread() {
public void run() {
try {
server = new ServerSocket(port);
while (true) {
Socket socket = server.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String identifier = in.readLine();
if (identifier.equalsIgnoreCase("Connect")) {
connect(); // stub
} else if (identifier.equalsIgnoreCase("NeedList")) {
giveList(list); // stub
} else if (identifier.equalsIgnoreCase("SendMessage")) {
sendMessage(); // stub
}
}
} catch (IOException e) {
// interrupted
}
}
}.start();
}
}

最佳答案

如果所有应用程序都使用相同的协议(protocol),这基本上意味着只要所有应用程序使用相同的数据包结构,您就可以使用一个端口。使用一个端口的另一个优点是它的配置较少,因为假设您有防火墙,您只需打开这个端口,如果有人尝试在受限制的网络内连接,这同样适用。

如果应用程序使用不同的协议(protocol),您最好使用三个端口。

关于java - 是打开不同的端口更好,还是打开一个带有标识符的端口更好(或者其他)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61582956/

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