已经建立连接,Server窗口显示"A client connected."
然后在Server窗口输入"Hello",但是Client窗口什么也没接收到,怎么回事呢?==[TCPServer.java]==
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(6000);
  Socket s = null;
  BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
  PrintWriter pw = null;
  BufferedReader br = null;
  while(true) {
  s = server.accept();
  System.out.println("A client connected.");
  pw = new PrintWriter(s.getOutputStream());
  br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  String str = null;
  while(true) {
   str = localBr.readLine();
   System.out.println("Server: " + str);
   pw.write("Server: " + str);
   System.out.println(br.readLine());
   if(str.equalsIgnoreCase("exit")) {
   break;
   }
  }
  pw.close();
  br.close();
  localBr.close();
  s.close();
  }
} catch (IOException e) {
e.printStackTrace();
System.out.println("error in server");
}
}
}
==[TCPClient.java]==
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
    try {
     Socket s = new Socket("222.90.199.75", 6000);
     BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
  BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  PrintWriter pw = new PrintWriter(s.getOutputStream());
  String str = null;
  while(true) {
   System.out.println(br.readLine());
   str = localBr.readLine();
   System.out.println(str);
   pw.write(str);
   if(str.equalsIgnoreCase("exit")) {
   break;
   }
  }
  br.close();
  pw.close();
  localBr.close();
  s.close();
    } catch (IOException e) {
     e.printStackTrace();
    } catch (Exception e) {
     e.printStackTrace();
    }
  }
}

解决方案 »

  1.   

      //Socket s = new Socket("222.90.199.75", 6000); 
    你是在本机上吗?还远程的呀?
      

  2.   

    在Server侧的pw.write("Server: " + str); 后面加上pw.flush();
      

  3.   

    自己和自己连,已经连接上了。打印出了"A client connected"
      

  4.   


    写了仍旧不显示啊,之前没写的原因是PrintWriter有自动flush的功能。
      

  5.   


    pw = new PrintWriter(s.getOutputStream(),true);// 刷新缓冲区
      

  6.   

    以下程序调试通过,改的地方做了注释
    主要是这句
    把你的这句pw.write("Server: " + str); 
    改成这样:pw.println("Server: " + str); pw.flush(); 
    因为你客户端要是用的readLine(),你用pw.write只是输出字符串,没有输出换行"\n"
    所以客户端看不到"\n"换行,客户端就认为没有读完,所以一直阻塞在那里,所以你的客户端始终是空白.
      

  7.   


    自己和自己连 用Socket s = new Socket("127.0.0.1",6000);
    不更稳吗???如果没有错误应该就是 flush;很重要啊!!!切忌java中没有小错误·大错误之分;
    只有成功和失败!!!!!