今天测试java socket编程。下面是代码:
package server; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class TalkClient { public static void main(String[] args) { // TODO Auto-generated method stub try{ //向本机的4700接口发送请求 Socket socket = new Socket("127.0.0.1",4700); //由系统标准输入设备构造BufferedReader对象 BufferedReader sin = new BufferedReader(new InputStreamReader(System.in)); //由Socket对象得到输出流,并构造PrintWriter对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); //由socket对象得到输入流,并构造响应的BufferedReader对象 BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); String readline; readline = sin.readLine();//从系统标准输入读入一个字符串 while(!readline.equals("bye")){ os.println(readline); os.flush(); System.out.println("Client:"+readline); System.out.println("Server:"+is.readLine()); readline = sin.readLine(); } os.close(); is.close(); socket.close(); }catch (Exception e) { System.out.println("Error"+e); } } }
下面是服务端:
package server; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class TalkServer { public static void main(String[] args) { try{ ServerSocket server = null; try{ server = new ServerSocket(4700); }catch(Exception e){ System.out.println("can not listen to:"+e); } Socket socket = null; try{ socket = server.accept(); }catch(Exception e){ System.out.println("Error."+e); } String line; BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter os = new PrintWriter(socket.getOutputStream()); BufferedReader sin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Client:"+is.readLine()); line = sin.readLine(); while(!line.equals("bye")){ os.println(line); os.flush(); System.out.println("Server:"+line); System.out.println("Client:"+is.readLine()); line = sin.readLine(); } os.close(); is.close(); socket.close(); }catch(Exception e){ System.out.println("Error."+e); } } }
具体socket在java里面的解析还需要看看源代码。