java 网络编程c/s…… 高手请进……
为什么我在客户端发送多句消息,服务端却总是只能收到一句呢?怎么改进下?麻烦高手指导》》》
//客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientTest{
public static void main(String []arg)
{
try{
Socket socket=new Socket("127.0.0.1",3024); //向本机的4700端口发出客户请求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));//由系统标准输入设备构造bufferedreader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());//由socket对象得到输出流,并构造printwriter对象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//由socket对象得到输入流,并构造相应的bufferedreader对象
String readline;
String str;
readline=sin.readLine(); //从系统标准输入读入一字符串
while(true) //若从标准输入读入的字符串为 " bye" 则停止循环
{
os.println(readline); //将从系统标准输入读入的字符串输出到server
os.flush();//刷新输出流,使server马上收到该字符串
str=is.readLine();
System.out.println(" server:" +str); //从server读入一字符串,并打印到标准输出上
if(str.equals("bye"))
{
break;
}
readline=sin.readLine(); //从系统标准输入读入一字符串
} //继续循环
os.close(); //关闭socket输出流
is.close(); //关闭socket输入流
socket.close(); //关闭socket
}catch(Exception e){
System.out.println("error:"+e);
}
}
}
//服务器端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
public class ServerTest
{
public static void main(String []args)
{
try
{
ServerSocket server=null ;
try
{
server=new ServerSocket(3024); //创建一个serversocket在端口4700监听客户请求
}catch(Exception e)
{
System.out.println(" can not listen to:" +e) ; //出错,打印出错信息
}
Socket socket=null ;
try
{
socket=server.accept(); //使用accept()阻塞等待客户请求,有客户请求到来则产生一个socket对象,并继续执行
}catch(Exception e)
{
System.out.println(" error: " +e); //出错,打印出错信息
}
String line ;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由socket对象得到输入流,并构造相应的bufferedreader对象
PrintWriter os=new PrintWriter(socket.getOutputStream()); //由socket对象得到输出流,并构造printwriter对象
line=is.readLine(); //在标准输出上打印从客户端读入的字符串
while(true) //如果该字符串为 " bye" ,则停止循环
{
System.out.println(" client:" +line); //从client读入一字符串,并打印到标准输出上
if(line.equals("bye")) break;
else if(line.equals("time"))
{
Date dt=new Date();
os.println(dt.getHours()+":"+dt.getMinutes()); //向客户端输出该字符串
os.flush(); //刷新输出流,使client马上收到该字符串
}
else if(line.equals("exit"))
{
os.println("bye"); //向客户端输出该字符串
os.flush(); //刷新输出流,使client马上收到该字符串
break;
}
line=is.readLine(); //从系统标准输入读入一字符串
} //继续循环
os.close(); //关闭socket输出流
is.close(); //关闭socket输入流
socket.close(); //关闭socket
server.close(); //关闭serversocket
}catch(Exception e){
System.out.println("error:"+e);
}
}
}