java 简单实现客户端和服务端在控制台发送消息 socket

1、实现在客户端刚连上服务端时,就收到服务端的欢迎信息。

在服务端通过Socket获取输出流,客户端获取输入流,实现服务端将消息发送给客户端.

这里让服务端直接将客户端发送过来的消息再回复给客户端来进行测试。

2、实现客户端和服务端在控制台发送消息

主要用到DataOutputStream,DataInputStream装饰类,使用dataOutputStream.writeUTF()接收输出的信息,dataInputStream.readUTF()读传入的信息

服务端代码:

public static void main(String[] args) {

        try {
            //1.创建socket对象
            ServerSocket serverSocket = new ServerSocket(2000);
            //2.监听 会返回一个客户端socket对象,有了监听,那么就有了阻塞
            Socket socket = serverSocket.accept();
            //System.out.println("远程主机地址:" + socket.getRemoteSocketAddress());

            //接收
            InputStream input = socket.getInputStream();
            DataInputStream in = new DataInputStream(input);
            System.out.println(in.readUTF());

            //输出
            OutputStream output = socket.getOutputStream();
            DataOutputStream out = new DataOutputStream(output);
            System.out.println("服务端:");
            out.writeUTF("欢迎访问服务端!");
            out.flush();

            String message = null;
            while ((message = in.readUTF()) != null) {
                System.out.println("客户端说:" + message);
                out.writeUTF("服务器已收到"+message);

            }
            out.writeUTF("服务器已收到"+message);

            out.flush();
            out.close();
            in.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

客户端代码:

客户端要找相应的服务,所以必须有 ip 和 端口

public static void main(String[] args) {
        try {
            //1、客户端要找相应的服务,所以必须 ip 和 端口
            Socket socket = new Socket("10.25.135.133",2000);

            //输出
            OutputStream out = socket.getOutputStream();
            DataOutputStream dataOutputStream = new DataOutputStream(out);
            System.out.println("客户端:");
            dataOutputStream.writeUTF("Hello world!");
            dataOutputStream.flush();
            //接收
            InputStream in = socket.getInputStream();
            DataInputStream dataInputStream = new DataInputStream(in);
            System.out.println(dataInputStream.readUTF());

            Scanner scanner = new Scanner(System.in);

            while(true) {
                String line = scanner.nextLine();
                if("exit".equalsIgnoreCase(line)){
                    break;
                }
                dataOutputStream.writeUTF(line);
                System.out.println(dataInputStream.readUTF()); //输出
            }

            dataOutputStream.flush();

            out.flush();
            out.close();
            dataInputStream.close();
            in.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

先运行服务端,启动完成后再运行客户端

运行效果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答您的问题。首先,您需要了解一些基本的知识,例如Java中的套接字编程和用户界面设计。 Java套接字编程是一种网络编程技术,它允许您在不同计算机之间进行通信。客户服务之间的通信是通过套接字实现的。Java中有两种套接字类型:服务器套接字和客户套接字。 要在Java中创建用户界面,您可以使用Java Swing库。Swing库提供了各种组件,例如按钮、文本框和标签,以创建用户界面。 下面是实现您所描述的客户服务登录界面并使用套接字进行通信的基本步骤: 1. 创建服务套接字:使用ServerSocket类创建一个服务套接字,并指定要监听的口号。例如,以下代码将创建一个在8080口上监听的服务套接字: ``` ServerSocket serverSocket = new ServerSocket(8080); ``` 2. 创建客户套接字:使用Socket类创建一个客户套接字,并指定要连接的服务器的IP地址和口号。例如,以下代码将创建一个客户套接字,以连接到IP地址为192.168.1.100、口号为8080的服务器: ``` Socket clientSocket = new Socket("192.168.1.100", 8080); ``` 3. 创建登录界面:使用Swing库创建一个登录界面,其中包括用户名和密码框、登录按钮等组件。用户输入用户名和密码,并点击登录按钮。 4. 在客户发送登录信息:当用户点击登录按钮时,在客户中使用套接字将用户名和密码发送服务器。例如,以下代码将向服务发送一个名为“username”的字符串: ``` OutputStream outputStream = clientSocket.getOutputStream(); outputStream.write("username".getBytes()); ``` 5. 在服务中接收登录信息:服务通过accept()方法接收客户的连接请求,并使用套接字接收客户发送的用户名和密码信息。例如,以下代码将接收客户发送的字符串并将其打印到控制台: ``` Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int length = inputStream.read(buffer); String username = new String(buffer, 0, length); System.out.println("Received username: " + username); ``` 6. 在服务中验证用户信息:服务可以将接收到的用户名和密码与数据库中存储的信息进行比较,以验证用户身份。 7. 在服务中向客户发送验证结果:服务使用套接字将验证结果发送客户。例如,以下代码将向客户发送一个名为“loginSuccessful”的字符串: ``` OutputStream outputStream = socket.getOutputStream(); outputStream.write("loginSuccessful".getBytes()); ``` 8. 在客户中接收验证结果:客户使用套接字接收服务发送的验证结果,并根据结果在用户界面上显示相应的消息。例如,以下代码将接收服务发送的字符串并将其显示在一个名为“resultLabel”的标签上: ``` InputStream inputStream = clientSocket.getInputStream(); byte[] buffer = new byte[1024]; int length = inputStream.read(buffer); String result = new String(buffer, 0, length); resultLabel.setText(result); ``` 以上是一个基本的示例,您可以根据您的需求进行修改和扩展。希望可以帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值