日期:2014-05-20  浏览次数:20670 次

求解一个Socket问题
import java.io.*;
import java.net.*;
public class Server4
{
public static void main(String[] args)
{
ServerSocket ss = null;
Socket s =null;
try
{
ss = new ServerSocket(8888);
}catch(Exception e){}
try
{
s = ss.accept();
}catch(Exception e){}
try
{
//开始声明各种输出输入流
//用来获得客户端的输入
BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
//自己向客户端输入东西
BufferedReader buff2 = new BufferedReader(new InputStreamReader(System.in));
//用于向客户端输出
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
boolean b = true;
System.out.println(buff.readLine());
while(b)
{
bw.write(buff2.readLine());
bw.flush();
System.out.println("clien say: "+buff.readLine());
if(buff2.readLine().equals("exit")){b=false;}
System.out.println("Server say: "+buff2.readLine());

}
}catch(Exception e){}
}
}


import java.io.*;
import java.net.*;
public class Client4
{
public static void main(String[] args)
{
try
{
//声明客户端
Socket s = new Socket("127.0.0.1",8888);
//创建向服务器输入的流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//接受服务器的流
BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
//创建从键盘输入流
BufferedReader buff2 = new BufferedReader(new InputStreamReader(System.in));
String sr = null;
while((sr=buff2.readLine())!=null)
{
bw.write(sr);
System.out.println("Server say :"+buff.readLine());
if(sr.equals("exit"))break;
System.out.println("client say :"+buff2.readLine());
}


}catch(Exception e){}
}
}

请教为什么我的客户端和服务器说话,就阻塞在那了,求解错在哪里了。

------解决方案--------------------

public class Client4 //客户端
.........
BufferedReader buff2 = new BufferedReader(new InputStreamReader(System.in));
String sr = null;
while((sr=buff2.readLine())!=null) //等待服务器端的消息。。。。。

public class Server4 //服务器
.....try
{
s = ss.accept(); //阻塞。。。等待消息
请问消息从哪里来?