- 0
- 0
- 约3.37千字
- 约 4页
- 2026-01-30 发布于北京
- 举报
•创建EchoServer
packagecom.sockettest;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassEchoServer{
privateintport=8000;
privateServerSocketserverSocket;
publicEchoServer()throwsIOException{
if(serverSocket==null){
//服务器程序通过一直监听端口,来接受客户程序的连接请求.在服务
器程序中,需要先创建一个ServerSocket对象,
//在构造方法中指定监听的端口.
//ServerSocket的构造方法负责在操作系统中把当前进程注册为服务器
进程.
serverSocket=newServerSocket(port);//监听
8000端口
System.out.println(服务器启动!);
}
}
publicStringecho(Stringmsg){
returnecho:+msg;
}
//Socket类提供getOutputStream()方法,返回输出流OutputSteam对象,程序
只需向输出流写数据,就能向对方发送数据,
//Socket的输出流可以用过滤流来装饰,这个方法中先获取输出流,然后用
PrintWriter装饰它,PrintWriter的println()方法能够写一行数据.
privatePrintWritergetWriter(Socketsocket)throwsIOException{
OutputStreamsocketOut=socket.getOutputStream();
returnnewPrintWriter(socketOut,true);//参数true表示每写一行,
PrintWriter缓存就自动溢出,把数据写到目的地
}
//Socket类提供getInputStream()方法,返回输入流InputStream对象,程
序只需从输入流读数据,就能接收来自对方的数据,
//Socket的输入流也可以用过滤流来装饰,这个方法中先获取输入流,然后
用BufferedReader装饰它,BufferedReader的readLine()方法能够读入一行数
据.
privateBufferedReadergetReader(Socketsocket)throwsIOException{
InputStreamsocketIn=socket.getInputStream();
returnnewBufferedReader(newInputStreamReader(socketIn));
}
/**
EchoServer类最主要的方法,它不断等待客户的连接请求,当
serverSocket.accept()方法返回一个Socket对象时,就意味着与一个客户建立
了连接,接下来从Socket对象中得到输出流和输入流,并且分别用PrintWriter
和BufferedReader来装饰它们.然后不断调用BufferedReader的readLine()
方法读取客户发来的字符串XXX,再调用PrintWriter的println()方法向客户
返回字符串echo:XXX.当客户发来的字符串为bye时,就会结束与客户的
通信,调用socket.close()方法断开连接.PS.这个方法无法同时与多个客户通
信.EchoServer接收到一个客户连接,就
原创力文档

文档评论(0)