Java聊天室
小虚竹and掘金 人气:0一、题目描述
题目实现:获取远程服务器和客户机的IP地址和端口号。
二、解题思路
创建一个服务器类:ServerSocketFrame,继承JFrame类
写一个getserver() 方法,实例化Socket对象,启用9527当服务的端口。
创建一个客户端类:ClientSocketFrame,继承JFrame类。
写一个connect() 方法,实例化Socket对象,连接本地服务的9527端口服务。
获得远程服务器的地址:socket.getInetAddress();
获得远程服务器的IP地址 :netAddress.getHostAddress()
获得远程服务器的端口号:socket.getPort()
获得客户端的地址:socket.getLocalAddress()
获得客户端的IP地址:localAddress.getHostAddress()
获得客户端的端口号:socket.getLocalPort()
三、代码详解
ServerSocketFrame
package com.xiaoxuzhu; import java.awt.BorderLayout; import java.net.*; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改记录: * 修改后版本 修改人 修改日期 修改内容 * 2022/5/31.1 xiaoxuzhu 2022/5/31 Create * </pre> * @date 2022/5/31 */ public class ServerSocketFrame extends JFrame { private JTextArea ta_info; private ServerSocket server; // 声明ServerSocket对象 private Socket socket; // 声明Socket对象socket public void getserver() { try { server = new ServerSocket(9527); // 实例化Socket对象 ta_info.append("服务器套接字已经创建成功\n"); // 输出信息 while (true) { // 如果套接字是连接状态 ta_info.append("等待客户机的连接......\n"); // 输出信息 socket = server.accept(); // 实例化Socket对象 ta_info.append("连接成功......\n"); } } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } } public static void main(String[] args) { // 主方法 ServerSocketFrame frame = new ServerSocketFrame(); // 创建本类对象 frame.setVisible(true); frame.getserver(); // 调用方法 } public ServerSocketFrame() { super(); setTitle("服务器端程序"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 336, 257); final JScrollPane scrollPane = new JScrollPane(); getContentPane().add(scrollPane, BorderLayout.CENTER); ta_info = new JTextArea(); scrollPane.setViewportView(ta_info); } }
ClientSocketFrame
package com.xiaoxuzhu; import java.awt.BorderLayout; import java.net.*; import javax.swing.*; import javax.swing.JScrollPane; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改记录: * 修改后版本 修改人 修改日期 修改内容 * 2022/5/31.1 xiaoxuzhu 2022/5/31 Create * </pre> * @date 2022/5/31 */ public class ClientSocketFrame extends JFrame { // 创建类继承JFrame类 private Socket socket; // 声明Socket对象 private JTextArea ta = new JTextArea(); // 创建JtextArea对象 public ClientSocketFrame() { // 构造方法 super(); // 调用父类的构造方法 setTitle("获取Socket信息"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 351, 257); final JScrollPane scrollPane = new JScrollPane(); getContentPane().add(scrollPane, BorderLayout.CENTER); scrollPane.setViewportView(ta); } private void connect() { // 连接套接字方法 ta.append("尝试连接......\n"); // 文本域中信息信息 try { // 捕捉异常 socket = new Socket("127.0.0.1", 9527); // 实例化Socket对象 ta.append("完成连接。\n"); // 文本域中提示信息 InetAddress netAddress = socket.getInetAddress();// 获得远程服务器的地址 String netIp = netAddress.getHostAddress();// 获得远程服务器的IP地址 int netPort = socket.getPort();// 获得远程服务器的端口号 InetAddress localAddress = socket.getLocalAddress();// 获得客户端的地址 String localIp = localAddress.getHostAddress();// 获得客户端的IP地址 int localPort = socket.getLocalPort();// 获得客户端的端口号 ta.append("远程服务器的IP地址:" + netIp + "\n"); ta.append("远程服务器的端口号:" + netPort + "\n"); ta.append("客户机本地的IP地址:" + localIp + "\n"); ta.append("客户机本地的端口号:" + localPort + "\n"); } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } } public static void main(String[] args) { // 主方法 ClientSocketFrame clien = new ClientSocketFrame(); // 创建本例对象 clien.setVisible(true); // 将窗体显示 clien.connect(); // 调用连接方法 } }
服务器启动,等待连接
客户端连接上
服务器提示,客户端连接成功
加载全部内容