一个简单的Echo Server的Java实现(增强版)

本文介绍了一个简单的回显服务器的实现方法,使用Java语言通过创建ServerSocket监听端口,并为每个连接创建处理线程来接收客户端消息并将其返回。文章详细展示了如何利用Socket API进行网络通信。

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

Server:
package midi.socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class PowerEchoServer {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
try {
            ServerSocket server 
= new ServerSocket(10000);
            System.out.println(
"Echo Server started!");
            
while (true{
                Socket socket 
= server.accept();
                System.out.println(
"a new comer!");
                Runnable r 
= new EchoHandlerThread(socket, 10000);
                Thread t 
= new Thread(r);
                t.start();
            }

        }
 catch (IOException e) {
            e.printStackTrace();
        }


    }


}

处理线程:
package midi.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class EchoHandlerThread implements Runnable {

    Socket socket 
= null;
    
int port = 0;
    
public EchoHandlerThread(Socket socket, int port) {
        
this.socket = socket;
        
this.port = port;
    }

    
public void run() {
        
try {
            InputStream inStream 
= socket.getInputStream();
            OutputStream outStream 
= socket.getOutputStream();
            
            BufferedReader br 
= new BufferedReader(new InputStreamReader(inStream));
            PrintWriter pw 
= new PrintWriter(outStream);
            
            pw.write(
"Welcome  ");
            pw.write(
"Type BYE to exit! ");
            pw.flush();
            
boolean done = false;
            String line 
= null;
            
while(!done && (line=br.readLine())!=null{
                pw.write(
"Echo:"+line+" ");
                pw.flush();
                
if(line.trim().equalsIgnoreCase("bye"))
                    done
=true;
            }

        }
 catch (IOException e) {
            e.printStackTrace();
        }

        
finally {
            
try {
                socket.close();
            }
 catch (IOException e) {
                e.printStackTrace();
            }

        }

        
    }


}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值