TCP编程
1.客户端 * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器 * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 * 输入流可以读取服务端输出流写出的数据 * 输出流可以写出数据到服务端的输入流 * 2.服务端 * 创建ServerSocket(需要指定端口号) * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流 * 输入流可以读取客户端输出流写出的数据 * 输出流可以写出数据到客户端的输入流
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class demon1_client { /* * 1.客户端 * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器 * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 * 输入流可以读取服务端输出流写出的数据 * 输出流可以写出数据到服务端的输入流 */ public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 12345); InputStream is = socket.getInputStream(); //客户端输入流 OutputStream os = socket.getOutputStream(); byte[] arr = new byte[1024]; int len = is.read(arr); // 读入 服务端歇过来的数据 System.out.println(new String(arr,0,len)); os.write("学习挖掘机哪家强?".getBytes()); // 客户端向服务器写数据 socket.close(); } }
public class demon1_server { /* * 2.服务端 * 创建ServerSocket(需要指定端口号) * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流 * 输入流可以读取客户端输出流写出的数据 * 输出流可以写出数据到客户端的输入流 */ public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(12345); Socket socket = server.accept(); // 接收客户端的 socket InputStream is = socket.getInputStream(); //客户端输入流 OutputStream os = socket.getOutputStream(); os.write("百度一下,你就知道".getBytes()); // 服务器向客户端写出数据 byte[] arr = new byte[1024]; int len = is.read(arr); System.out.println(new String(arr,0,len)); // 读取客户端发来的数据 socket.close(); } }
代码优化
网络编程(TCP协议) * 1.客户端 * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器 * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 * 输入流可以读取服务端输出流写出的数据 * 输出流可以写出数据到服务端的输入流 * 2.服务端 * 创建ServerSocket(需要指定端口号) * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流 * 输入流可以读取客户端输出流写出的数据 * 输出流可以写出数据到客户端的输入流 ###26.17_网络编程(TCP协议代码优化) * 客户端 Socket socket = new Socket("127.0.0.1", 9999); //创建Socket指定ip地址和端口号 InputStream is = socket.getInputStream(); //获取输入流 OutputStream os = socket.getOutputStream(); //获取输出流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); PrintStream ps = new PrintStream(os); System.out.println(br.readLine()); ps.println("我想报名就业班"); System.out.println(br.readLine()); ps.println("爷不学了"); socket.close(); * 服务端 ServerSocket server = new ServerSocket(9999); //创建服务器 Socket socket = server.accept(); //接受客户端的请求 InputStream is = socket.getInputStream(); //获取输入流 OutputStream os = socket.getOutputStream(); //获取输出流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); PrintStream ps = new PrintStream(os); ps.println("欢迎咨询XXXX"); System.out.println(br.readLine()); ps.println("报满了,请报下一期吧"); System.out.println(br.readLine()); server.close(); socket.close(); 网络编程(服务端是多线程的) ServerSocket server = new ServerSocket(9999); //创建服务器 while(true) { final Socket socket = server.accept(); //接受客户端的请求 new Thread() { public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println("欢迎咨询XXXX"); System.out.println(br.readLine()); ps.println("报满了,请报下一期吧"); System.out.println(br.readLine()); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } }
竹杖芒鞋轻胜马,一蓑烟雨任平生。
回首向来萧瑟处,也无风雨也无晴。