java聊天室如何实现文件传输

主体我已经写好了,只是在客户端要实现文件传输需要怎么写啊,服务器端要改动吗?求指点。。。。... 主体我已经写好了,只是在客户端要实现文件传输需要怎么写啊,服务器端要改动吗?求指点。。。。 展开
 我来答
牲口了记忆
2011-12-26 · TA获得超过156个赞
知道答主
回答量:127
采纳率:0%
帮助的人:74.3万
展开全部
客户端互传文件建议采用UDP协议,实施点对点数据传输,这样就不需要改动服务器端,如果基于tcp协议传文件,则需要将文件上传至服务器,好友再去服务器下载文件,这样增大了服务器的负荷、占用了服务器空间。
那么如何传输文件呢?
你可以在给好友发送文件前发一条消息(文件名)给好友,对方接受则发送文件,拒绝则不发送
//发送文件代码,放在按钮里面
private File file;
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
if (chooser.showOpenDialog(this) == javax.swing.JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
//文件接收部分核心代码,放在按钮里面
private File file;
try {
ServerSocket server = new ServerSocket(6000);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
if (chooser.showSaveDialog(this) == javax.swing.JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
OutputStream writer1 = new FileOutputStream(file);
while ((len = in.read(buf)) > 0) {
writer1.write(buf, 0, len);
writer1.flush();
}
writer1.close();
this.dispose();
} catch (IOException ex) {
Logger.getLogger(Jieshou.class.getName()).log(Level.SEVERE, null, ex);
}

由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!忘采纳
天融信教育科技613
2018-03-15 · TA获得超过2439个赞
知道大有可为答主
回答量:1375
采纳率:58%
帮助的人:182万
展开全部
客户端互传文件建议采用UDP协议,实施点对点数据传输,这样就不需要改动服务器端,如果基于tcp协议传文件,则需要将文件上传至服务器,好友再去服务器下载文件,这样增大了服务器的负荷、占用了服务器空间。
那么如何传输文件呢?
你可以在给好友发送文件前发一条消息(文件名)给好友,对方接受则发送文件,拒绝则不发送
//发送文件代码,放在按钮里面
private File file;
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
if (chooser.showOpenDialog(this) == javax.swing.JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
//文件接收部分核心代码,放在按钮里面
private File file;
try {
ServerSocket server = new ServerSocket(6000);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
if (chooser.showSaveDialog(this) == javax.swing.JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
OutputStream writer1 = new FileOutputStream(file);
while ((len = in.read(buf)) > 0) {
writer1.write(buf, 0, len);
writer1.flush();
}
writer1.close();
this.dispose();
} catch (IOException ex) {
Logger.getLogger(Jieshou.class.getName()).log(Level.SEVERE, null, ex);
}

由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!希望可以帮到你,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式