🌟服务端
1、通过serversoket注册端口
2、服务端调用accpect方法用于监听客户端的socket请求
3、从socket中获取字节输入或输出流进行数据的读写操作
🌟客户端
1、通过socket对象与服务端连接
2、从socket中得到字节输入或者输出流进行读写操作
服务端
//服务端public static void main(String[] args) {try {//定义ServerSocket进行端口注册ServerSocket socket = new ServerSocket(8686);//监听客户端的Socket请求Socket st = socket.accept();//获取Socket请求中的字节输入流对象InputStream is = st.getInputStream();//把字节输入流包装成缓冲字符输入流BufferedReader bfr = new BufferedReader(new InputStreamReader(is));String msg;if ((msg = bfr.readLine())!=null){System.out.println("服务端接收到的信息"+ msg);}} catch (IOException e) {e.printStackTrace();}}
客户端
//客户端public static void main(String[] args) {try {//创建Socket对象请求服务器连接Socket socket = new Socket("127.0.0.1",8686);//从Socket中获取字节流OutputStream os = socket.getOutputStream();//把字节输出流包装成一个打印流PrintStream ps = new PrintStream(os);ps.println("hello word!!! ");ps.close();} catch (IOException e) {e.printStackTrace();}}
思想:通过while函数实现客户端一直发送消息往服务端,服务端一直接接收消息并输出,实现多发和多收的机制
客户端
//客户端public static void main(String[] args) {try {//创建Socket对象请求服务器连接Socket socket = new Socket("127.0.0.1",8686);//从Socket中获取字节流OutputStream os = socket.getOutputStream();//把字节输出流包装成一个打印流PrintStream ps = new PrintStream(os);Scanner sc = new Scanner(System.in);while (true){System.out.print("请说");String msg = sc.nextLine();ps.println(msg);ps.flush();}} catch (IOException e) {e.printStackTrace();}}
服务端
//服务端public static void main(String[] args) {try {//定义ServerSocket进行端口注册ServerSocket socket = new ServerSocket(8686);//监听客户端的Socket请求Socket st = socket.accept();//获取Socket请求中的字节输入流对象InputStream is = st.getInputStream();//把字节输入流包装成缓冲字符输入流BufferedReader bfr = new BufferedReader(new InputStreamReader(is));String msg;while ((msg = bfr.readLine())!=null){System.out.println("服务端接收到的信息"+ msg);}} catch (IOException e) {e.printStackTrace();}}
实现了客户端每发一条消息,服务端就即使接收并打印出来
服务端 | 客户端