网络编程:
功能:
实现客户端和服务器之间的通信,客户端先发送消息,然后服务器接收后再发送一条消息,然后客户端接收再发一条,当客户端输入“Bye”时候结束通信
Server.java如下所示:
1 package bag1; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.io.PrintWriter; 7 import java.net.ServerSocket; 8 import java.net.Socket; 9 import java.util.Scanner; 10 11 public class Server { 12 13 public static void main(String[] args) throws IOException { 14 Socket s = null; 15 Scanner sc = new Scanner(System.in); 16 ServerSocket ss = new ServerSocket(8080); 17 String str = null; 18 s = ss.accept(); 19 System.out.println("链接成功!!"); 20 BufferedReader is = new BufferedReader(new InputStreamReader(s.getInputStream())); 21 PrintWriter os = new PrintWriter(s.getOutputStream(), true); 22 23 while(true){ 24 str = is.readLine(); 25 System.out.println("Client:" + str); 26 if(str.equals("Bye")){ 27 s.close(); 28 break; 29 } 30 str = sc.nextLine(); 31 os.println(str); 32 } 33 } 34 }
Client.java如下所示:
1 package bag1; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.io.PrintWriter; 7 import java.net.InetSocketAddress; 8 import java.net.Socket; 9 import java.net.SocketAddress; 10 import java.util.Scanner; 11 12 public class Client { 13 14 public static void main(String[] args) throws IOException { 15 Socket s = new Socket(); 16 Scanner sc = new Scanner(System.in); 17 String str = null; 18 s.bind(null); // 随机指定端口 19 SocketAddress ra = new InetSocketAddress("localhost", 8080); 20 s.connect(ra, 60000); 21 BufferedReader is = new BufferedReader(new InputStreamReader(s.getInputStream())); 22 PrintWriter os = new PrintWriter(s.getOutputStream(),true); 23 str = sc.nextLine(); 24 while(true){ 25 os.println(str); 26 str = is.readLine(); 27 if(str.equals("Bye")){ 28 s.close(); 29 } 30 //System.out.println("读取服务器端成功!!"); 31 System.out.println("Server:" + str); 32 str = sc.nextLine(); 33 34 } 35 } 36 37 }