java聊天室如何实现文件传输
2个回答
展开全部
客户端互传文件建议采用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);
}
由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!忘采纳
那么如何传输文件呢?
你可以在给好友发送文件前发一条消息(文件名)给好友,对方接受则发送文件,拒绝则不发送
//发送文件代码,放在按钮里面
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);
}
由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!忘采纳
展开全部
客户端互传文件建议采用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);
}
由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!希望可以帮到你,谢谢!
那么如何传输文件呢?
你可以在给好友发送文件前发一条消息(文件名)给好友,对方接受则发送文件,拒绝则不发送
//发送文件代码,放在按钮里面
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);
}
由于你已经写好主体了,具体的消息处理就根据你的主体修改吧!希望可以帮到你,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询