一、服务器端
1、创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口
ServerSocket server = new ServerSocket(8888);
2、调用accept()方法,开始侦听,等待客户端的连接,在未连接成功之前,处于阻塞状态,返回的socket,用于与客户端连接
Socket socket = server.accept();
3、获取输入流,用来读取客户端发来的信息
 InputStream is = socket.getInputStream();//字节输入流
		InputStreamReader isr = new InputStreamReader(is);//字符输入流
		BufferedReader br = new BufferedReader(isr);//缓冲输入流
		String info = null;
		while((info=br.readLine()) != null){
			//循环读取数据
			System.out.println("客户端说:"+info);
		}
		socket.shutdownInput();//关闭输入流
4、获取输出流,用户响应客户端的请求
 OutputStream os = socket.getOutputStream();//字节输出流
		PrintWriter pw = new PrintWriter(os);//打印输出流
		pw.write("服务器端已接受你的请求,允许登录");
		pw.flush();
		socket.shutdownOutput();//关闭输出流
5、关闭资源
 br.close();
		isr.close();
		is.close();
		pw.close();
		os.close();
		socket.close();
		server.close();
二、客户端
1、创建客户端socket,指定要连接的服务器地址和端口号
Socket socket = new Socket("127.0.0.1",8888);
2、获取输出流,给服务器端发送信息
 OutputStream os = socket.getOutputStream();//字节流
		PrintWriter pw = new PrintWriter(os);//打印流
		pw.write("用户名:admin;密码:123");
		pw.flush();
		socket.shutdownOutput();//关闭输出流
3、获取输入流,用来读取服务器端发来的信息
 InputStream is = socket.getInputStream();//字节输入流
		InputStreamReader isr = new InputStreamReader(is);//字符输入流
		BufferedReader br = new BufferedReader(isr);//缓冲输入流
		String info = null;
		while((info=br.readLine()) != null){
			System.out.println("服务端说:"+info);
		}
		socket.shutdownInput();//关闭输入流
4、关闭资源
 br.close();
		isr.close();
		is.close();
		pw.close();
		os.close();
		socket.close();
原文:http://www.cnblogs.com/rrb520/p/6245415.html