java实现一个简单的回声服务

本文详细介绍了一种基于Java的Echo Server与Client的实现方法,包括服务器端与客户端的代码设计,通过Socket进行网络通信,实现消息的接收与反射回送。文章提供了完整的代码示例,涵盖ServerSocket、Socket、DataInputStream、DataOutputStream等关键类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EchoServer代码

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class EchoServer {
    Integer port;
    ServerSocket ss;
    class ServiceThread extends Thread{
        @Override
        public void run() {
            try {
                ss=new ServerSocket(port);
                while(true){
                    Socket s=ss.accept();
                    //把连接通道交给通信线程
                    TongXinThread t=new TongXinThread(s);
                    t.start();
                }
            } catch (IOException e) {
                System.out.println("服务停止");
            }
        }
    }

    public EchoServer(Integer port) {
        this.port = port;
    }

    //启动
    public void startService(){
        ServiceThread s=new ServiceThread();
        s.start();
    }
}

//通信线程类
class TongXinThread extends Thread{
    private Socket s;
    public TongXinThread(Socket s) {
        this.s = s;
    }
    @Override
    public void run() {
        try {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
            DataInputStream in=new DataInputStream(s.getInputStream());
            DataOutputStream out=new DataOutputStream(s.getOutputStream());
            while(true){
                String str=in.readUTF();
                out.writeUTF(str);
                System.out.println(str);
                out.writeUTF(sdf.format(new Date())+" "+str);
            }
        } catch (IOException e) {
            System.out.println("一个客户离线");
        }
    }
}

客户端代码

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

public class EchoClient {
    private Integer port;
    private String ip;

    public void startService()  {
        try {
            Socket s=new Socket(ip,port);
            DataInputStream dis=new DataInputStream(s.getInputStream());
            DataOutputStream dos=new DataOutputStream(s.getOutputStream());
            while(true){
                System.out.println("请输入要发送的消息");

                String send=new Scanner(System.in).next();
                dos.writeUTF(send);

                //接收到消息
                String recive=dis.readUTF();
                System.out.println("--->"+recive+"<---");
            }
        } catch (IOException e) {
            System.out.println("未连接到服务器");
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值