用字符流实现的SOCKET连接不能进行双向传递

王朝other·作者佚名  2007-01-10
宽屏版  字体: |||超大  

证明:

当我用字符流实现了服务器端和客户端的连接后,从客户端发送字符串给服务器端,服务器端收到信息后再回传一个信息给客户端此时出现了阻塞,如改用其他流均可实现双向传递。

服务器端程序:

import java.net.*;

import java.io.*;

public class MyServer

{

private static BufferedReader in;

private static PrintWriter out;

public static void main(String args[])

{

ServerSocket ss=null;

try {

ss=new ServerSocket(1235);

}

catch (Exception ex) {

}

while(true)

{

try {

System.out.println ("服务器正在监听!");

Socket socket=ss.accept();

//建立读连接

in=new BufferedReader(new InputStreamReader(socket.getInputStream ()));

//建立写连接

out=new PrintWriter(socket.getOutputStream ());

//读消息

System.out.println (in.readLine());

//写消息

out.write("客户端你已经被踢出去了!");

out.flush();

out.close();

// break;

}

catch (Exception ex) {

System.out.println ("有问题!");

}

}

}

}

客户端程序:

import java.net.*;

import java.io.*;

public class Client

{

private static BufferedReader in;

private static PrintWriter out;

public static void main(String args[])

{

try {

// Socket socket=new Socket("127.0.0.1",1235);

Socket socket=new Socket();

InetAddress ia=InetAddress.getLocalHost();

InetSocketAddress isa=new InetSocketAddress(ia,1235);

// socket.bind(isa);

socket.connect(isa);

//建立读连接

in=new BufferedReader(new InputStreamReader(socket.getInputStream ()));

//建立写连接

out=new PrintWriter(socket.getOutputStream ());

//发送消息

out.write("服务器登录了! ");

out.flush();

// System.out.println (in.readLine());//如果将这条语句的注释标记去掉将发生阻塞无法正常读取服务器端发来的数据

in.close();

out.close();

}

catch (Exception ex) {

System.out.println ("客户端有问题!"+ex);

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有