java - 服务器和客户端之间的套接字对象不同
问题描述
有什么方法可以检查服务器端和客户端之间是否使用了相同的 Socket?
- 我做了什么。
- 创建 DateServer.java 和 DateClient.java
- 运行 DateServer.java
- 运行 DateClient.java
- 检查控制台上的两个 hashCode。hashCode 不同。我以为是一样的。
- 日期服务器.java
package net;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class DateServer {
public static final int LISTENING_PORT = 32007;
public static void main(String[] args) {
ServerSocket listener;
Socket connection;
try {
listener = new ServerSocket(LISTENING_PORT);
while (true) {
connection = listener.accept();
System.out.println(connection.hashCode());
sendDate(connection);
}
} catch (Exception e) {
return;
}
}
private static void sendDate(Socket client) {
try {
Date now = new Date();
PrintWriter outgoing = new PrintWriter(client.getOutputStream());
outgoing.println(now.toString());
outgoing.flush();
client.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
- 日期客户端.java
package net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
public class DateClient {
public static final int LISTENING_PORT = 32007;
public static void main(String[] args) {
String hostName = "localhost";
Socket connection;
BufferedReader incoming;
try {
connection = new Socket(hostName, LISTENING_PORT);
System.out.println(connection.hashCode());
incoming = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String lineFromServer = incoming.readLine();
System.out.println();
System.out.println(lineFromServer);
System.out.println();
incoming.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
在服务器端输出。
1804094807
在客户端输出。
1826771953
2021 年 3 月 7 日星期日 18:16:05 JST
解决方案
hashCode 不同。我以为是一样的
这个假设是错误的。而且我不知道它来自哪里。但hashCode
只返回与本地对象关联的本地标识符。
推荐阅读
- google-apps-script - 如果选中/取消选中复选框,则应用程序脚本 onEdit 可跨多个工作表添加/清除时间戳
- python - 你能让这个功能更高效吗?谢谢
- javascript - 如何使用 Tampermonkey 填写 Google 表单的下拉列表和文本输入?
- postgresql - 如何插入一个空行,但正确进行串行更新?
- javascript - 在新的 DOM 主体中创建和查询元素
- python - 如何减少此函数中的参数数量
- javascript - 用ajax请求填充选择
- javascript - css 样式未在模态对话框中应用 - 我该如何解决?
- orm - 在 ORM Coldfusion 中使用动态生成的实体名称
- debugging - Firefox 开发者工具,同时打开 Inspector & debugger