【Socket 网络编程】面试必问:C/S 架构客户端与服务端必须互相知道 IP 和端口吗? 本文彻底搞懂Socket 网络编程 C/S 架构中最容易混淆的知识点服务端与客户端到底谁需要知道谁的 IP 和端口一、一句话结论背下来不需要双方都知道在 Socket 套接字 C/S客户端 / 服务端架构中只有客户端必须知道服务端的 IP 端口服务端不需要提前知道任何客户端信息二、详细通俗解释一看就懂1. 服务端Server做什么服务端的工作模式是被动等待连接只需要绑定自己的 IP 和端口启动监听等待客户端主动连接当客户端连接成功时自动获取客户端的 IP 和端口不需要提前知道任何客户端信息核心代码逻辑cpp运行// 1. 服务端只绑定自己的 IP 和端口 bind(server_fd, (struct sockaddr *)server_addr, sizeof(server_addr)); // 2. 开始监听等待客户端连接 listen(server_fd, 5); // 3. 客户端连接时自动获取客户端 IP/端口 accept(server_fd, (struct sockaddr *)client_addr, addr_len);2. 客户端Client做什么客户端的工作模式是主动发起连接必须提前知道服务端的 IP 端口不然不知道连谁主动向服务端发送连接请求自己的 IP / 端口由操作系统自动分配无需手动指定核心代码逻辑cpp运行// 客户端必须指定服务器IP 服务器端口 connect(client_fd, (struct sockaddr *)server_addr, sizeof(server_addr));三、最直观的生活比喻秒理解服务端 公司前台有固定电话端口 固定地址IP只需要等待别人打电话进来不需要提前知道谁会打电话客户端 你用手机拨号必须知道公司电话号码服务端 IP 端口主动拨号才能联系上你的手机号对方会自动看到不需要提前告诉对方四、最终总结表面试 / 考试标准答案表格角色需要知道服务端 IP 端口需要知道客户端 IP 端口服务端❌ 不需要❌ 不需要连接时自动获取客户端✅必须知道❌ 不需要五、超简短记忆口诀plaintext客户端找服务端必须知道 IP 端口 服务端等连接不用管客户来自哪六、核心结论重申最重要服务端只需要绑定自己的端口被动等待连接客户端必须知道服务端的 IP 和端口主动发起连接服务端不需要提前知道任何客户端信息连接建立后双方才能互相通信