java 网络编程之Socket编程

 

 1.客户端代码

 1 package com.gylhaut.socket;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.OutputStream;
 8 import java.io.PrintWriter;
 9 import java.net.Socket;
10 import java.net.UnknownHostException;
11 
12 /**
13  * 
14  * 客户端Socket
15  *
16  */
17 public class Client {
18     public static void main(String[] args) {
19         try {
20             //1.创建客户端Socket, 指定服务器地址和端口
21             Socket socket = new Socket("localhost",8888);
22             //2.获取输出流,向服务器端发送信息
23             OutputStream os =socket.getOutputStream();//字节输出流
24             PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
25             pw.write("用户名:admin; 密码:123");
26             pw.flush();
27             socket.shutdownOutput();//关闭输出流
28             String info = null;
29             InputStream is = socket.getInputStream();
30             InputStreamReader isr = new InputStreamReader(is);
31             BufferedReader bReader = new BufferedReader(isr);
32             while ((info = bReader.readLine())!= null) {//循环读取客户端信息
33                 System.out.println("我是客户端,服务器说:"+ info);
34             }
35             //
36             bReader.close();
37             isr.close();
38             is.close();
39             pw.close();
40             os.close();
41             socket.close();
42         } catch (UnknownHostException e) {
43             e.printStackTrace();
44         } catch (IOException e) {
45             e.printStackTrace();
46         }
47     }
48 }
View Code

2.服务端代码

 1 package com.gylhaut.socket;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.OutputStream;
 8 import java.io.PrintWriter;
 9 import java.net.ServerSocket;
10 import java.net.Socket;
11 /*
12  * 基于TCP协议的Socket通信,实现用户登录
13  * 服务器端
14  */
15 public class Server {
16     public static void main(String[] args){
17         try {
18             //1.创建一个服务器端的Socket,即ServerSocket,指定绑定的端口,并监听客户端
19             ServerSocket serverSocket = new ServerSocket(8888);
20             //2.调用accept()方法开始监听,等待客户端的连接
21             System.out.println("***服务器即将启动,等待客户端的连接***");
22             Socket socket = serverSocket.accept();
23             //3.获取输入流,并读取客户端信息
24             InputStream is = socket.getInputStream();//字节输入流
25             InputStreamReader isr = new InputStreamReader(is);//将字节流转换为字符流
26             BufferedReader bReader = new BufferedReader(isr);
27             String info = null;
28             while ((info = bReader.readLine())!= null) {//循环读取客户端信息
29                 System.out.println("我是服务器,客户端说:"+ info);
30             }
31             socket.shutdownInput();//关闭输入流
32             //4.获取输出流,响应客户端的请求
33             OutputStream os = socket.getOutputStream();
34             PrintWriter pWriter = new PrintWriter(os);//包装为打印流
35             pWriter.write("欢迎您!");
36             pWriter.flush();//调用flush 方法将刷新缓存
37             
38             //5.关闭资源
39             pWriter.close();
40             os.close();
41             bReader.close();
42             isr.close();
43             is.close();
44             socket.close();
45             serverSocket.close();
46         } catch (IOException e) {
47             e.printStackTrace();
48         }
49     }
50 }
View Code
原文地址:https://www.cnblogs.com/gylhaut/p/5270012.html