服务器端:
OutputStream netOut=clientSocket.getOutputStream();
OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));
.......省略读取文件发送到客户端的代码
doc.close();//这样会关闭socket连接,没有这句客户端的while(num!=(-1))不会成立,会一直等待服务器发数据客户端:
InputStream netIn=socket.getInputStream();
InputStream fileIn=new DataInputStream(new BufferedInputStream(netIn));
byte[] buf=new byte[2048];
int num=fileIn.read(buf);
System.out.println("开始写入");
while(num!=(-1))
{//是否读完所有数据
raf.write(buf,0,num);//将数据写往文件
raf.skipBytes(num);//顺序写文件字节
num=fileIn.read(buf);//继续从网络中读取文件
}
fileIn.close();
raf.close();
-------------------------------------------
-------------------------------------------
-------------------------------------------
就是这句doc.close();//这样会关闭socket连接,没有这句客户端的while(num!=(-1))不会成立,会一直等待服务器发数据
怎么样啊,怎么让socket连接不能端,客户端又能知道服务器已经发完数据了.
OutputStream netOut=clientSocket.getOutputStream();
OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));
.......省略读取文件发送到客户端的代码
doc.close();//这样会关闭socket连接,没有这句客户端的while(num!=(-1))不会成立,会一直等待服务器发数据客户端:
InputStream netIn=socket.getInputStream();
InputStream fileIn=new DataInputStream(new BufferedInputStream(netIn));
byte[] buf=new byte[2048];
int num=fileIn.read(buf);
System.out.println("开始写入");
while(num!=(-1))
{//是否读完所有数据
raf.write(buf,0,num);//将数据写往文件
raf.skipBytes(num);//顺序写文件字节
num=fileIn.read(buf);//继续从网络中读取文件
}
fileIn.close();
raf.close();
-------------------------------------------
-------------------------------------------
-------------------------------------------
就是这句doc.close();//这样会关闭socket连接,没有这句客户端的while(num!=(-1))不会成立,会一直等待服务器发数据
怎么样啊,怎么让socket连接不能端,客户端又能知道服务器已经发完数据了.
解决方案 »
- MyEclipse8.5打开就卡死了,什么情况?
- 一道java程序题
- String.trim()的源码问题
- Java RMI 的问题
- 怎样在ContainerListener的componentRemoved方法里面得到被删除comonent在原来comtainer里面的位置?
- 发几篇swing中关于JTable中的运用-5
- 想写出灵活,功能强大的SQL语句...有什么好的电子文档可以学习吗,..
- 如何使JFrame的窗口总在最前?
- 大虾救命!!!
- 请问在linux下,如何测试jdk已安装完成,是否要先设定环境变量?jre呢?
- 初学者求救!!!急!!
- 请教,JBUILDER中使用SWING时自定义异常问题
但好象不标准,最好关闭socket.
socket不能关啊,还有其他要传输的
象我以前做的C项目里很多是这样的.
struct A
{
int lengh_data; //要发送的长度
char data[1]; //要发送的数据
}
我也想不通,为什么缓冲区没数据了,还不会返回-1,一定要socket关闭
测试很多次了
num=fileIn.read(buf);
不光闭链接,就会一直等待.难道要再开一个专门传输文件的socket的链接吗
有没办法在此链接的基础上,不断开的情况下,传输一个文件另外还有一个问题在eclipse里怎么调试带参数的程序,比如这样java server 2000
有没办法一起调试两个程序,像这样c/s的程序