【问题标题】:Reading from socket input stream从套接字输入流中读取
【发布时间】:2013-11-10 23:49:08
【问题描述】:

我正在尝试确定通过客户端和服务器之间的套接字传输数据的最佳方式。目前我有一个 BufferedReader 一次读取一个字符(或者自上次迭代以来已经到达了许多字符)。通过每次迭代,它会将到目前为止接收到的数据拉到一个数组中。当'|'字符被读取,它就知道当前指令已经完成。

我知道到目前为止我所拥有的效率非常低并且会烧毁 CPU,但我有点不清楚从套接字输入流中读取的所有方式之间的差异。我会用什么来不必一次读取每个字符,而是等到输入流完成接收当前指令(将由“\n”终止)?

【问题讨论】:

  • 如果你的命令是 \n 终止的,为什么要逐个字符地读取而不是调用 BufferedReader.readLine()?
  • 据我了解,也许我错了,readline 没有读取缓冲区中当前的内容吗?所以假设我正在发送“你好”这个词,并且只有“他”到达,它不只是读到那个吗?
  • Readline 阻塞直到整行被读取。您只能获取基于 char 数组的 read() 方法的部分数据。

标签: java sockets


【解决方案1】:

我发现最好的方法是为每个侦听输入的套接字/客户端创建一个新线程。 readLine() 总是适合我。或许this 可以帮到你一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2014-02-08
    • 1970-01-01
    相关资源
    最近更新 更多