Java Socket編程服務器端和客戶端的一個簡單實例


注:本程序在MyEclipse8.5環境下運行通過,運行時請先啟動服務器端,在啟動客戶端,否則會出錯。

服務器端:

 1 import java.io.*;
 2 import java.net.*;
 3 
 4 public class EchoServer {
 5     private int port=8000;
 6     private ServerSocket serverSocket;
 7     
 8     public EchoServer() throws IOException{
 9         serverSocket=new ServerSocket(port);
10         System.out.println("服務器啟動");
11         }
12     public String echo(String msg){
13         return "echo:"+msg;
14     }
15     public PrintWriter getWriter(Socket socket)throws IOException{
16         OutputStream socketOut=socket.getOutputStream();
17         return new PrintWriter(socketOut,true);
18     }
19     public BufferedReader getReader(Socket socket)throws IOException{
20         InputStream socketIn=socket.getInputStream();
21         return new BufferedReader(new InputStreamReader(socketIn));
22     }
23     public void service(){
24         while(true){
25             Socket socket=null;
26             try{
27                 socket=serverSocket.accept();//等待客戶端連接
28                 System.out.println("New aonnection accepted"
29                                         +socket.getInetAddress()+":"
30                                         +socket.getPort());
31                 BufferedReader br=getReader(socket);
32                 PrintWriter pw=getWriter(socket);
33                 
34                 String msg=null;
35                 while((msg=br.readLine())!=null){
36                     System.out.println(msg);
37                     pw.println(echo(msg));
38                     if(msg.equals("bye"));
39                         break;
40                 }
41             }catch(IOException e){e.printStackTrace();
42             }finally{
43                 try{
44                     if(socket!=null)
45                         socket.close();
46                 }catch(IOException e){e.printStackTrace();
47                 }
48             }
49         }
50     }
51 
52     public static void main(String[] args) throws IOException {
53         // TODO Auto-generated method stub
54         new EchoServer().service();
55     }
56 
57 }

 

客戶端:

 1 import java.net.*;
 2 import java.io.*;
 3 
 4 public class EchoClient {
 5     
 6     private String host="localhost";
 7     private int port=8000;
 8     private Socket socket;
 9 
10     public EchoClient()throws IOException{
11         socket = new Socket(host,port);
12     }
13     public static void main(String []args) throws IOException {
14         // TODO Auto-generated method stub
15         new EchoClient().talk();
16     }
17     private PrintWriter getWriter(Socket socket)throws IOException{
18         OutputStream socketOut=socket.getOutputStream();
19         return new PrintWriter(socketOut,true);
20     }
21     private BufferedReader getReader(Socket socket)throws IOException{
22         InputStream socketIn=socket.getInputStream();
23         return new BufferedReader(new InputStreamReader(socketIn));
24     }
25     public void talk()throws IOException{
26         try{
27             BufferedReader br=getReader(socket);
28             PrintWriter pw=getWriter(socket);
29             BufferedReader localReader=new BufferedReader(new InputStreamReader(System.in));
30             String msg=null;
31             while((msg=localReader.readLine())!=null){
32                 pw.println(msg);
33                 System.out.println(br.readLine());            
34                 if(msg.equals("bye"))
35                     break;
36             }
37         }catch(IOException e){
38             e.printStackTrace();
39         }finally{
40             try{socket.close();}catch(IOException e){e.printStackTrace();}
41         }
42     }    
43 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM