服务器
package com.test; import java.net.*; import java.io.*; public class MyServer { public MyServer(){ try { //在60000端口上监听 ServerSocket ss = new ServerSocket(60000); System.out.println("服务器启动,在60000端口上监听..."); //阻塞 等待某个客户端的连接 这个函数会返回Socket连接 Socket s = ss.accept(); //System.out.println("与客户端的连接打通"); //与客户端打通之后 就可以从s中读取客户端发送过来的数据 客户端的s与服务器的s是一样的 是同一个通道 //InputStreamReader:是读对象 表示从s中读取数据流 InputStreamReader isr = new InputStreamReader(s.getInputStream()); BufferedReader br = new BufferedReader(isr); String info = br.readLine(); System.out.println("客户端说:"+info); PrintWriter pw = new PrintWriter(s.getOutputStream(),true); //往客户端写一行 pw.println("你好客户端,我是服务器"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args){ MyServer ms = new MyServer(); } }
客户端
package com.test; import java.net.Socket; import java.io.*; public class MyCLient { public static void main(String[] args) { MyCLient myClient = new MyCLient(); } public MyCLient(){ try { //Socket()需要传入两个参数 第一个是要发送的服务器的ip,第二个是端口 Socket s = new Socket("127.0.0.1",60000); //如果s连接成功就可以往服务器发送数据 //PrintWriter:写入对象 //getOutputStream: 输出流 表示往s中写入数据,true 代表及时刷新数据 PrintWriter pw = new PrintWriter(s.getOutputStream(),true); //println()表示写一行 pw.println("你好啊 ,我是客户端"); //读取服务器发送过来的数据 InputStreamReader isr =new InputStreamReader(s.getInputStream()); BufferedReader br = new BufferedReader(isr); String info = br.readLine(); System.out.println("服务器说:"+info); } catch (Exception e) { e.printStackTrace(); } } }
先启动服务器,让服务器在60000端口上监听,再启动客户端,那么这时客户端与服务器之间的socket连接打通,不过这样是一次性的