服务器端的java代码
package com.aaa.servet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;//导入java.net包,用于网络通讯import java.net.Socket;/** * 这种是基于TCP的案例。 * @author teayear * */public class ServerSocketTest { public static void main(String[] args) { System.out.println("...启动TCP Socket服务器..."); //1.初始化服务端Socket并绑定端口为8888 try { ServerSocket serverSocket=new ServerSocket(8888);//需要添加try/catch块 //2.等待客户端的连接 Socket socket=serverSocket.accept(); //3.获取输入流,通过socket对象流,传递给缓冲字符流进行读取; BufferedReader bufferReader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8")); //4.读取一行数据;// String str=bufferReader.readLine(); String str; //4.1升级,通过循环升级接受信息; while((str=bufferReader.readLine())!=null){ //5.输出打印 System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } }}
效果如下:
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class ClientSocket { public static void main(String[] args) { //1.创建socket对象,建立到服务i端的连接; try { Socket socket=new Socket("127.0.0.1",8888); //2.通过缓冲输出流,包装下socket对象的输出字节流,进行写操作; BufferedWriter bufferWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"GBK")); //通过标准输入流获取字符流; BufferedReader bufferReader=new BufferedReader(new InputStreamReader(System.in,"GBK")); //循环升级; while(true){ String str=bufferReader.readLine(); bufferWriter.write(str); bufferWriter.write("\n"); //3.2还需要将缓冲中的内容放到socket bufferWriter.flush(); } //4.注意一定要有关闭连接;// socket.shutdownOutput(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
在服务器端会显示: