黑马程序员技术交流社区

标题: 客户端停掉后,服务端怎么也停止了???能不能不停止 [打印本页]

作者: 潜伏    时间: 2013-12-6 15:01
标题: 客户端停掉后,服务端怎么也停止了???能不能不停止
/*
要求:建立一个客户端和一个服务端,客户端从键盘输入的小写字母传到服务端,服务端将小写字母转换为大写并返回给客户端。
*/
import java.io.*;
import java.net.*;
class Consumer
{
        public static void main(String[] args)throws Exception
        {
        Socket s=new Socket(InetAddress.getLocalHost(),1798);//  创建端点也叫套接字,并指定ip和端口
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String str=null;
        BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream()));
        String str1=null;
        while((str=br.readLine())!=null)
        {
                bw.write(str);
                //bw.flush();//必须得刷新,如果不刷新就存储在缓冲区里面。只有刷新才能刷出去。如果写这儿的话,下次再写的时候才会刷新
                bw.newLine();
                bw.flush();//必须在后面,不然刷新的出去了没有行结束符号。服务断不能readLine()结束
                str1=br1.readLine();
                System.out.println(str1);
                if(str.equals("over"))
                        break;
        }
       
               
        s.close();
        bw.close();
        br.close();
        br1.close();
        }
}
class Server
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(1798);//创建指定端口的服务器套接字
                Socket s=ss.accept();
                BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                String str=null;
                while((str=br.readLine())!=null)//如果客户端不带有行分隔符就会停在这步
                {
                        System.out.println(str);
                        bw.write(str.toUpperCase());
                        bw.newLine();
                        bw.flush();
                }
        }
}

作者: 王家胜    时间: 2013-12-6 16:33
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.InputStreamReader;
  4. import java.io.OutputStreamWriter;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;

  7. public class Server
  8. {
  9.         public static void main(String[] args) throws Exception
  10.         {
  11.                 while (true)
  12.                 {
  13.                         ServerSocket ss = new ServerSocket(1798);// 创建指定端口的服务器套接字
  14.                         Socket s = ss.accept();
  15.                         BufferedReader br = new BufferedReader(new InputStreamReader(
  16.                                         s.getInputStream()));
  17.                         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
  18.                                         s.getOutputStream()));
  19.                         String str = null;
  20.                         while ((str = br.readLine()) != null)// 如果客户端不带有行分隔符就会停在这步
  21.                         {
  22.                                 System.out.println(str);
  23.                                 bw.write(str.toUpperCase());
  24.                                 bw.newLine();
  25.                                 bw.flush();
  26.                         }
  27.                         br.close();
  28.                         bw.close();
  29.                         bw.flush();
  30.                         ss.close();
  31.                 }
  32.         }
  33. }
复制代码

加入循环就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2