基于Tcp连接
Server端
1 /* 2 需求:定义端点接收数据并打印在控制台上。 3 4 服务端: 5 1,建立服务端的socket服务。ServerSocket();并监听一个端口 6 7 2,获取连接过类的客户端对象。 8 通过ServerSocket的accept方法。没有连接就会等,所以这个方法是阻塞式的 9 3,客户端如果发送过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流 10 来读取发过来的数据。并打印在控制台上 11 4, 关闭服务端(可选操作) 12 */ 13 14 import java.io.*; 15 import java.net.*; 16 17 18 class Server{ 19 public static void main(String [] args) throws IOException{ 20 //建立服务端的Socket服务,并监听一个端口。 21 ServerSocket ss = new ServerSocket(10009); 22 23 //通过ServerSocket的accept方法,获取客户端连接过来的对象。 24 25 Socket s = ss.accept(); 26 27 //获取发送数据的客户端主机ip地址 28 String ip = s.getInetAddress().getHostAddress(); 29 30 //获取客户端发过来的数据,要使用客户端的对象的读取流方法来读取数据 31 32 InputStream in = s.getInputStream(); 33 34 //字节流转换为字符流 35 InputStreamReader ir = new InputStreamReader(in); 36 37 //添加缓冲区 38 BufferedReader bf = new BufferedReader(ir); 39 40 String a = bf.readLine(); 41 //byte[] buf=new byte[1024]; 42 //int a = in.read(buf); 43 44 45 System.out.print(a+" "+ip); 46 47 //System.out.println(new String(buf,0,a)+" "+ip); 48 } 49 }
Client端
1 import java.io.*; 2 import java.net.*; 3 4 class Client{ 5 public static void main(String [] args) throws IOException{ 6 //创建客户端的socket服务。指定目的主机和端口 7 Socket s = new Socket("127.0.0.1",10009); 8 9 //为了发送数据,应该获取socket流中的输出流 10 OutputStream out = s.getOutputStream(); 11 12 //将信息转换成字节形式虽网络流发送出去 13 out.write("tcp ge men lai le".getBytes()); 14 //关闭网络流socket 15 s.close(); 16 17 } 18 }
运行结果