本帖最后由 java2000_net 于 2008-08-04 14:33:34 编辑

解决方案 »

  1.   

    1. 要先判断接收的是不是 -1 ,如果是就break;如果不是才接收。否则num = inputS.read(buf); 会阻塞线程。2. 我不太明白LZ的意思,但是如果是想在传完文件后再传一些字符串的话,可以在文件传输的最后把字符串拼接上去,只是需要在文件的最后一个字符和字符串的字一个字符之间加上一个用于分割的符号就可以了。server端识别到这个符号就能知道,文件已经传输完毕,后面跟的是字符串
      

  2.   

    回“yangk_105”:1。 我不明白怎么先判断接收的是不是 -1?  难道不是inputS.read(buf) != -1这样判断吗?2。 在文件传输的最后加入字符串? 这要怎么加呢? 请给我一个例子。 谢谢。
      

  3.   

    1. readchar()可以实现单个字符的读取,LZ可查看一下API2.LZ可以把一个文件的内容读取到一个 buffer中,然后在这个buffer的后面加上分隔符,再加上想传输的字符串。如果文件太大,不方便使用buffer,而是直接读取然后传输,也没有关系。LZ可以先获取该文件的大小(byte),然后在传输了这格大小的文件数据后,再传输分隔符和字符串
      

  4.   

    其实,建议LZ在接收数据之前先判断一下,在socket中一次性可接收的数据量
      

  5.   

    你传递文件完毕只好不是还给服务端发送了“sendfileend”
    你可以在服务端读取的时候判断内容有这个的就跳出读取的循环。或者你可以设置一个readtimeout,在超时抛出异常的时候跳出读取的循环。