浏览 273 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-02-20
一个C/S结构的输入字符并且显示的源码。在客户端输入任意字符,通过服务器可能回显到客户端上。在客户端上输入"exit",退出程序。 用户可以自行填写服务器地址 包括EchoServer和EchoClient两个class文件,分别为服务器和客户端文件。
EchoServer.class的源码如下:
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.ServerSocket; import java.net.Socket; public class EchoServer { private int port = 8000; private ServerSocket serverSocket; public EchoServer() throws IOException { serverSocket = new ServerSocket(port); // 监听8000端口 System.out.println("服务器启动"); } public String echo(String msg) { return "echo : " + msg; } // 向客户端发送处理后的消息 private PrintWriter getWriter(Socket socket) throws IOException { OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut, true); } // 接收客户端发送过来的消息 private BufferedReader getReader(Socket socket) throws IOException { InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void service() { while (true) { Socket socket = null; try { socket = serverSocket.accept(); // 等待客户连接 System.out.println("New connection accepted" + socket.getInetAddress() + " : " + socket.getPort()); BufferedReader br = getReader(socket); PrintWriter pw = getWriter(socket); String msg = null; while ((msg = br.readLine()) != null) { System.out.println(msg); // 打印出接收到的消息 pw.println(echo(msg)); // 把处理后的消息返回给客户端 if (msg.equals("exit")) break; } } catch (IOException e) { e.printStackTrace(); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) throws IOException { new EchoServer().service(); } }
EchoClient.class文件的源码如下: 写道 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 EchoClient { private int port = 8000; private Socket socket; public EchoClient(String host) throws IOException { socket = new Socket(host, port); System.out.println("Find an Server.Create socket conn success!"); } public static void main(String[] args) throws IOException { System.out.println("Please enter the IP Address of the Server:"); BufferedReader serAdd = new BufferedReader(new InputStreamReader(System.in)); new EchoClient(serAdd.readLine().toString()).talk(); } private PrintWriter getWriter(Socket socket) throws IOException { OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut, true); } private BufferedReader getReader(Socket socket) throws IOException { InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void talk() throws IOException { try { BufferedReader br = getReader(socket); PrintWriter pw = getWriter(socket); BufferedReader localReader = new BufferedReader( new InputStreamReader(System.in)); String msg = null; while ((msg = localReader.readLine()) != null) { pw.println(msg); System.out.println(br.readLine()); if (msg.equals("exit")) break; } } catch (IOException e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-02-22
老实说,看不到B/S的B在哪里,还有,这只是最基本的Socket编程,贴上来干什么?最好在标题上说明.
|
|
| 返回顶楼 | |
|
时间:2008-02-22
不好意思,菜菜鸟我是。 为了学习贴上去的。 不好意思~ |
|
| 返回顶楼 | |



