我现在用mina做服务器, 客户端 由于某些原因只能用 传统的 阻塞socket现在问题是,客户端可以连上服务器,但是 当 往服务器写 数据的时候, 服务器接收不到,请高手指点,下面是客户端代码:Socket socket = new Socket();
SocketAddress sa = new InetSocketAddress("192.168.1.112", 8888);
socket.connect(sa);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
BufferedReader  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out.writeUTF("hello,world.");
while(true)
{
String theLine = in.readLine( );
System.out.println("read:"+theLine);
out.writeUTF("hello,world.");
 if (theLine.equals(".")) break;
}
Thread.sleep(1000*10);
socket.close();

解决方案 »

  1.   

    你先用底层的output写一点byte出去看看这样可以先判断 到底是底层socket的问题还是你上层DataOutputStream 或更上层的问题还有就是服务端有没有及时读取net底层(os层)的输入缓存也是一个问题。 
      

  2.   

    是Socket吧?说成mina服务器,吓到我了,呵呵。往服务器写数据,服务器收不到,代码正确的那就要看看防火墙,Socket受防火墙的影响
      

  3.   

    能连上就不是防火墙的问题:TCP层能连上,就需要完成三次握手协议,代表了IP层能互传数据包。
    你这个问题是由于没有Flush导致的,如果不调用flush()方法,那需要等缓冲区满以后,自动发送报文(注:缓冲区满是TCP协议层的概念,不同的操作系统对于TCP协议实现不同)