Java编写简单客户/服务器程序

来源:互联网 发布:gm3188写频软件 编辑:程序博客网 时间:2024/05/16 15:20

    1.建立EchoServer服务器,监听来自客户的连接

EchoServer.java:

package chapter01;import java.io.*;import java.net.*;public class EchoServer {private int port = 8000;                 //服务器端口号(IP默认为本地主机IP)private ServerSocket serverSocket;       //ServerSocketpublic EchoServer() throws IOException{serverSocket = new ServerSocket(port);System.out.println("服务器启动");}public String echo(String msg){return "echo" + msg;}/* *分别用PrintWriter和BufferedReader 修饰socket中的输入输出流  */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("bye")){break;}}}catch(IOException e){e.printStackTrace();}finally{try{if(socket!=null){socket.close();}}catch(IOException e){e.printStackTrace();}}}}public static void main(String argsp[]) throws IOException{new EchoServer().service();}}


    2.EchoClient向服务器发出连接

EchoClient.java:

package chapter01;import java.net.*;import java.io.*;public class EchoClient {private String host = "127.0.0.1";       //指定要连接的服务器IP地址private int port = 8000;                 //指定要连接的服务器端口号private Socket socket;public EchoClient() throws IOException{socket = new Socket(host,port);}public static void main(String[] args) throws IOException {new EchoClient().talk();}/* *分别用PrintWriter和BufferedReader 修饰socket中的输入输出流  */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("bye")){break;}}}catch(IOException e){e.printStackTrace();}finally{try{socket.close();}catch(IOException e){e.printStackTrace();}}}}


测试:




0 0
原创粉丝点击