最近做项目,回想起了socket,做一个小例子回顾下,长期没有使用,忘记的差不多了。
预期目标:客户端向服务器端发送消息,服务器端读取信息,回复客户端,循环往复。
server端代码:
package com.dai.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** * @Title: server.java * @Package com.dai.socket * @Description: TODO(添加描述) * @author 代长亚 * @date 2010-6-3 上午11:09:15 * @version V1.0 */ public class Server { /** * @Fields name : TODO(用一句话描述这个变量表示什么) */ private ServerSocket serverSocket=null; /** * @Fields name : TODO(用一句话描述这个变量表示什么) */ private Socket socket=null; /** * <p>Title: </p> * <p>Description: </p> */ public Server() { // TODO Auto-generated constructor stub try { serverSocket = new ServerSocket(8888); System.out.println("服务器端已经启动....."); while(true){ socket=serverSocket.accept(); //得到输入流 DataInputStream dis = new DataInputStream(socket.getInputStream()); //得到输出流 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); System.out.println("客户端发来信息:"+dis.readUTF()); System.out.print("请求回复信息:"); Scanner sc = new Scanner(System.in); dos.writeUTF(sc.nextLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @Title: main * @Description: TODO(这里用一句话描述这个方法的作用) * @param args 设定文件 * @return void 返回类型 * @throws * @date 2010-6-3 上午11:09:15 */ public static void main(String[] args) { // TODO Auto-generated method stub new Server(); } }
客户端代码:
package com.dai.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.Scanner; /** * @Title: Client.java * @Package com.dai.socket * @Description: TODO(添加描述) * @author 代长亚 * @date 2010-6-3 上午11:33:41 * @version V1.0 */ public class Client { /** * @Fields name : TODO(用一句话描述这个变量表示什么) */ private Socket socket=null; /** * <p>Title: </p> * <p>Description: </p> */ public Client() { // TODO Auto-generated constructor stub try { System.out.println("客户端已经启动....."); while(true){ socket=new Socket("127.0.0.1",8888); //得到输入流 DataInputStream dis = new DataInputStream(socket.getInputStream()); //得到输出流 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); System.out.print("请输入要发送的话:"); Scanner sc = new Scanner(System.in); dos.writeUTF(sc.nextLine()); System.out.println("服务器端:"+dis.readUTF()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @Title: main * @Description: TODO(这里用一句话描述这个方法的作用) * @param args 设定文件 * @return void 返回类型 * @throws * @date 2010-6-3 上午11:33:41 */ public static void main(String[] args) { // TODO Auto-generated method stub new Client(); } }
回顾:
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());