本帖最后由 yeyongjin 于 2010-04-07 17:26:41 编辑

解决方案 »

  1.   

    1.
      查看API
    public InputStream getInputStream()
                               throws IOException返回此套接字的输入流。 
    如果此套接字具有关联的通道,则所得的输入流会将其所有操作委托给通道。如果通道为非阻塞模式,则输入流的 read 操作将抛出 IllegalBlockingModeException。 在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP 连接情况下的连接重置)。当网络软件检测到中断的连接时,将对返回的输入流应用以下操作: 网络软件可能丢弃经过套接字缓冲的字节。网络软件没有丢弃的字节可以使用 read 读取。 如果没有任何字节在套接字上缓冲,或者 read 已经消耗了所有缓冲的字节,则对 read 的所有后续调用都将抛出 IOException。 如果没有任何字节在套接字上缓冲,并且没有使用 close 关闭套接字,则 available 将返回 0。 关闭返回的 InputStream 将关闭关联套接字。 
    返回:
    从此套接字读取字节的输入流。 
    抛出: 
    IOException - 如果在创建输入流时发生 I/O 错误、没有关闭套接字、没有连接套接字或者使用 shutdownInput() 关闭了套接字输入
    2.
      是否有异常3.
      还不行。请发到 [email protected] 这是我的邮箱..
      

  2.   

    你没明白API中说明的事情
    返回值的产生
    肯定是函数已经运行完毕了
    那还阻塞个什么劲啊
    返回值是-1表明
    有连接
    但是没输送数据
    阻塞表示等待传送数据如果你对这些不明白的话
    你的函数肯定用不对的至少说明你的方法的逻辑是有问题的
      

  3.   

    你能不能把题目写清楚一点。
    谁能看得懂啊。
    socket的另一边可写这别写数据了啊
    ServlerSocket socket = new ServerSocke(33);
    socket.getOutputStream();
      

  4.   

    你能不能把题目写清楚一点。
    谁能看得懂啊。
    socket的另一边可向这边写数据了啊
    ServlerSocket socket = new ServerSocke(33);
    socket.getOutputStream();
      

  5.   

    在你使用这里的代码调用你的serverInput.read()之前
    是不是在其他的地方试验下这个函数
    或者你该检查下自己的代码到底出现什么问题了
    是否得到了该数据流
    是否有socket生成
      

  6.   

    首先,当与服务器端建立连接后,第一次读取数据正常,然后紧接着他就又去读数据下面是第二次读数据日志:2010-04-07 16:50:18,265 [DEBUG] [LongSocketMsgQueue.java] run : 43 -- -----------------------------准备接收OCS消息开始---------------------------
    lenBuffer[0]-1
    lenBuffer[1]-1
    lenBuffer[2]-1
    lenBuffer[3]-1
    lenBuffer[4]-1
    lenBuffer[5]-1
    2010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 62 -- 收到的SOCKET消息长度{HEX}:00FFFFFF
    2010-04-07 16:50:18,265 [DEBUG] [LongSocket.java] run : 64 -- 收到的消息长度{DEC}: 16777215
    line[0]-1
    line[1]-1
    line[2]-1
    line[3]-1
    line[4]-1
    line[5]-1