黑马程序员技术交流社区
标题:
客户端停掉后,服务端怎么也停止了???能不能不停止
[打印本页]
作者:
潜伏
时间:
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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static void main(String[] args) throws Exception
{
while (true)
{
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();
}
br.close();
bw.close();
bw.flush();
ss.close();
}
}
}
复制代码
加入循环就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2