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

原创 2006年06月08日 19:21:00

证明:

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

服务器端程序:
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);
     }
 }
  
}

浅谈SOCKET字节流和字符流的区别

字节流顾名思意是处理2进制的 字符流处理的字符集 网友回复:字节流就是流里的最小单位是byte,一个byte所包含的信息的-128到127. 仅此而已。 字符流就是流里的最小单位是char,一个...
  • long458
  • long458
  • 2013年04月17日 15:08
  • 1078

socket发送字符流,无法接收回复的流

00 socket发送字符流,无法接收回复的流3 服务端:  Java代码   package socket;      import java.io....
  • aree
  • aree
  • 2014年04月03日 17:11
  • 900

socket通信中字节流、字符流区别

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的...

socket通信中字节流、字符流区别

先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流...

socket通信中字节流、字符流区别 续

写数据 import java.io.File;  import java.io.FileOutputStream;  .import java.io.IOException;  imp...

IO学习(七)用字符流进行纯文本的读取和写出

纯文本的读取,步骤: 1.建立联系 file对象 2.选择流: Reader FileReader 3.读取:char[] flush=new char[1024]; 4.关闭资源...

分别使用(字符流)和(字节流)对文件进行读写操作

一.使用(字符流)对文件进行读写操作/* * 使用字符流对文件进行读写操作 */ import java.io.BufferedReader; import java.io.FileInputSt...

字节转换字符流...

  • 2008年03月26日 10:29
  • 3.1MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用字符流实现的SOCKET连接不能进行双向传递
举报原因:
原因补充:

(最多只允许输入30个字)