java - Socket客户端和服务端互相访问为什么会出现这样的错误
巴扎黑
巴扎黑 2017-04-18 10:15:44
0
2
344

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();
}

}

巴扎黑
巴扎黑

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!