【网络编程】用Socket实现聊天小程序

客户端:

 1 package day18_网络编程;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 import java.net.Inet4Address;
 8 import java.net.InetAddress;
 9 import java.net.Socket;
10 import java.net.UnknownHostException;
11 import java.util.Scanner;
12 
13 public class Client {
14 
15     public static void main(String[] args) throws IOException {
16         InetAddress address = InetAddress.getByName("127.0.0.1");
17         while (true) {
18             Socket socket = new Socket(address, 8833);
19             // 向服务器传输数据
20             OutputStream os = socket.getOutputStream();
21             Scanner sc = new Scanner(System.in);
22             String word = sc.next();
23             os.write(word.getBytes());
24             socket.shutdownOutput();
25             
26             // 读取服务器发送过来的信息
27             InputStream is = socket.getInputStream();
28             byte[] bs = new byte[1024];
29             int length = -1;
30             while ((length = is.read(bs)) != -1) {
31                 String str = new String(bs, 0, length);
32                 System.out.println(str);
33             }
34             socket.shutdownInput();
35 
36             os.close();
37             is.close();
38         }
39     }
40 
41 }

服务器端:

 1 package day18_网络编程;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.ServerSocket;
 7 import java.net.Socket;
 8 import java.util.Scanner;
 9 
10 import sun.nio.cs.ext.ISCII91;
11 
12 public class Server {
13 
14     public static void main(String[] args) throws IOException {
15         ServerSocket serverSocket = new ServerSocket(8833);
16         
17         while (true) {
18             Socket socket = serverSocket.accept();
19             // 读取客户端发送过来的信息
20             InputStream is = socket.getInputStream();
21             int length = -1;
22             byte[] bs = new byte[1024];
23             while ((length = is.read(bs)) != -1) {
24                 String msg = new String(bs, 0, length);
25                 System.out.println(msg);
26             }
27             socket.shutdownInput();
28             
29             // 向客户端发送信息
30             OutputStream os = socket.getOutputStream();
31             Scanner scanner = new Scanner(System.in);
32             String toWord = scanner.next();
33             os.write(toWord.getBytes());
34             socket.shutdownOutput();
35             is.close();
36             os.close();
37         }
38         
39     }
40 
41 }