(1)我需要实现的是建立一次连接之后,便可以以阻塞的方式往socket中读写数据;在网上查了下,似乎没有类似代码;
敲了段书上的例子,socket读写是通过bufferReader,readline&&printwriter.println(),但总是ANR报错,而且不能传输中文;
}
最好贴下操作代码;谢谢;

解决方案 »

  1.   

    socket监听不就是阻塞式的吗,阻塞式的读写? 不懂啥意思ANR是操作时间太长了,在线程里操作就好了不能传输中文? 这个不清楚,回头试一下看看
      

  2.   

    没啊,通过msg=bufferReader.readline()和msg = dataInputStream.readUTF();都不能在一次连接之后持续通信;
    服务端的读取代码如下:
    while(true){
       msg=bufferReader.readline();//这边并没有阻塞;
       //或者 msg = dataInputStream.readUTF();
    }
    服务端对每个客户端连接都有开线程处理,代码如下:
    public void run() {
    try {
    dataInputStream = new DataInputStream(
    localSocket.getInputStream());
    dataOutputStream = new DataOutputStream(
    localSocket.getOutputStream()); while (true) {
    String msg;
    try {
    msg = dataInputStream.readUTF();
    if (!msg.equals("connect***")) {
    System.out.println("msg" + msg); // 打印客户端发来的消息
    System.out.println("ip:" + localSocket.getInetAddress()); //
    dataOutputStream.writeUTF("Hello 客户端!");
    System.out.println("*********************");
    // 像客户端发送消息
    }


    // 打印客户端IP
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } // 读取一个字符串

    }
    }
      

  3.   

    readLine就是不阻塞,直接用read(),这个记得是阻塞的