import java.net.*;import java.io.*;class Client2Demo { public static void main(String[] args) throws IOException { //首先就是不用说是建立服务 Socket s=new Socket("127.0.0.1",10002); //然后就是开始写数据 OutputStream fos=s.getOutputStream(); //读取键盘 BufferedReader bufr =new BufferedReader( new InputStreamReader(System.in)); fos.write(bufr.readLine().getBytes());// String line=null;// while((line=bufr.readLine())!=null){// fos.write(line.getBytes());// fos.flush();// } //读取服务端发的数据 InputStream fis =s.getInputStream(); byte[] bys=new byte[1024]; int len= fis.read(bys);// while((len=fis.read(bys))!=-1){ System.out.println(new String(bys,0,len));// } s.close(); bufr.close(); }}
/*这个是服务端的部分*/
class Server2Demo{ public static void main(String[] args) throws IOException { //首先要做的就是建立服务端的额服务 ServerSocket ss=new ServerSocket(10002); //确认是否建立连接 注意这里不是确认连接 是在侦听并接收套接字的连接 Socket s=ss.accept(); //读取数据 InputStream ins=s.getInputStream(); byte[] bys=new byte[1024]; int len= ins.read(bys); System.out.println(new String(bys,0,len));// while((len=ins.read(bys))!=-1){// System.out.println(new String(bys,0,len));// } OutputStream out=s.getOutputStream(); //然后就是写数据给客户端
//服务端键盘没法录入数据 BufferedReader bufr=new BufferedReader( new InputStreamReader(System.in)); out.write(bufr.readLine().getBytes());// String line=null;// while((line=bufr.readLine())!=null){// out.write(line.getBytes());// out.flush();// // } ss.close(); bufr.close(); }}//你需要注意的是阻塞式方法BufferedReader 的readLine方法
键盘的录入方法
Socket的循环读取方法
这些都是阻塞式方法
你服务端无法输入是因为在等待客户端的无止尽的输出,服务端的输入代码其实根本没有执行到
|