1,Socket客户端和服务端互相访问,客户端刚发一个信息,服务器直接中断。
import java.net.*;
import java.io.*;
/*
需求:建立一个文本转换服务器。
客户端给服务器端发送文本,服务端会将文本转成大写再返回给客户端。
而且客户端可以不断的进行文本转换。当客户端输入over时,转换结束。
*/
class TransClient {
public static void main(String[] args)throws Exception { Socket s=new Socket("127.0.0.1",10006); //定义读取键盘数据的流对象 BufferedReader buffr= new BufferedReader(new InputStreamReader(System.in)); //定义目的,将数据写入到Socket输出流。发给服务端。 BufferedWriter buffout= new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //定义一个socket读取流,读取服务端返回的大写信息 BufferedReader bufin= new BufferedReader(new InputStreamReader(s.getInputStream())); String line=null; while((line=buffr.readLine())!=null) { if(line.equals("over")) break; buffout.write(line);//line写出的数据没有回车符 buffout.newLine();//需要newLine buffout.flush();//刷新后输出流才有数据 String str=bufin.readLine(); System.out.println("Server:"+str); } buffr.close(); s.close(); }
}
class TransServer {
public static void main(String[] args)throws Exception { //接受客户端发来的数据 ServerSocket ss=new ServerSocket(10006); Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+"connected"); //读取Socket读取流中的数据 BufferedReader buffin= new BufferedReader(new InputStreamReader(s.getInputStream())); //目的,socket输出流。将大写数据写入到Socket输出流,并发送给客户端。 BufferedWriter buffout= new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String line=null; while((line=buffin.readLine())!=null)//readline会判断有没有回车符,没有回车符会继续等待读。 { System.out.println(line); buffout.write(line.toUpperCase()); buffout.newLine(); buffout.flush(); } s.close(); ss.close(); }
}
你的server socket就accept一次,就能通信一次啊
一周热门 更多>