1、客户端
package com.ljb.app.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;import java.net.UnknownHostException;/** * 客户端(模拟客户登陆并接收服务端响应信息) * @author LJB * @version 2015年3月11日 */public class LoginClient { /** * @param args */ public static void main(String[] args) { try { // 建立客户端Socket连接,指定服务器的位置以及端口 Socket socket = new Socket("localhost",8800); // 得到Socket的读写流 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); // 获取输入流 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 进行写操作 String info = "用户名:Tom,密码:123456"; pw.write(info); pw.flush(); socket.shutdownOutput(); // 接收服务端响应 String reply = null; while (!((reply = br.readLine()) == null)) { System.out.println("我是客户端,服务端响应是:" + reply); } // 关闭流 br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
2、服务端
package com.ljb.app.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.ServerSocket;import java.net.Socket;/** * 服务端(接收客户端登陆信息并给出响应) * @author LJB * @version 2015年3月11日 */public class LoginServer { /** * @param args */ public static void main(String[] args) { try { // 建立一个服务器绑定指定端口Socket(ServerSocket)并开始监听 ServerSocket serverSocket = new ServerSocket(8800); // 使用accept()方法阻塞等待监听,获得新的连接 Socket socket = serverSocket.accept(); // 获得输入流 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 获得输出流 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); // 读取用户输入信息 String info = null; while (!((info = br.readLine()) == null)) { System.out.println("我是服务器,用户信息为:" + info); } // 响应信息 String reply = "welcome"; pw.write(reply); pw.flush(); // 关闭流 pw.close(); os.close(); br.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } }}
运行结果:
客户端:
我是客户端,服务端响应是:welcome
服务端:
我是服务器,用户信息为:用户名:Tom,密码:123456