社区
Java SE
帖子详情
用TCP传输文件
sky123123
2009-03-30 03:22:18
我用TCP编了个聊天软件,想加入文件传输功能,就是在点击传输文件按钮时,对方能够弹出一个对话框是否同意接受。这个功能怎么样实现呢?小弟一时还想不起来啊,不知那个高手肯给予指点迷津啊?感谢了!!!
...全文
320
14
打赏
收藏
用TCP传输文件
我用TCP编了个聊天软件,想加入文件传输功能,就是在点击传输文件按钮时,对方能够弹出一个对话框是否同意接受。这个功能怎么样实现呢?小弟一时还想不起来啊,不知那个高手肯给予指点迷津啊?感谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sky123123
2009-04-03
打赏
举报
回复
在大家的热情帮助下,我文件传输成功了。谢谢大家!!!!
我用的是C/S S/C模型,有一个客户端发送消息,经由服务器转发至每个客户端,所以,我在客户端发送信息的时候,加上本客户端的端口好,再由服务器转发,发至客户端时在将端口号分离出来,然后和自己的端口好比较,如果和自己的端口号相等就不做任何处理,不相等的话,就证明是传输文件的信号,就启动接受文件线程。接着建立,文件传输TCP连接。接着就可以传输文件啦!
最后还要感谢大家的热忱相助。
衷心的表示感谢!!!
sky123123
2009-04-02
打赏
举报
回复
牛仔都很忙啊..
将sendSignle(fs.trueFileName); 方法包装在一个"发送"按钮事件监听器类,在事件发生事调用我上面那段代码,不行么?
[/Quote]
我也做到这步了,
fs.sendSignle(fs.trueFileName); //发送一个信号
fs.startServerThread(); //用线程启动传送文件
这个sendSingle();信号怎么样才能让通过服务器的另外一个客户端受到并响应呢?
就差这一步啦!!!
请多多帮忙啊!!!!
万分感谢!!!!!!!!!!!
chaner2002
2009-04-01
打赏
举报
回复
[Quote=引用 10 楼 sky123123 的回复:]
能不能给出具体的代码啊?????
[/Quote]
牛仔都很忙啊..
将sendSignle(fs.trueFileName); 方法包装在一个"发送"按钮事件监听器类,在事件发生事调用我上面那段代码,不行么?
sky123123
2009-04-01
打赏
举报
回复
没有人愿意回答吗?还是问题太简单了???希望大家多多帮忙啊,俺等了很久啊,现在急用!!!!!!!
sky123123
2009-04-01
打赏
举报
回复
能不能给出具体的代码啊?????
w2010kaoyan
2009-04-01
打赏
举报
回复
学习中!
diggywang
2009-04-01
打赏
举报
回复
我觉得我已经说的很详细了,java中socket默认都是以tcp方式建立连接的,所以你不用管tcp或udp之类的底层协议,只要建立socket连接,就可以read来write去啦!
chaner2002
2009-03-31
打赏
举报
回复
你加入一个按钮,这个按钮注册一个弹出JFileChooser,具体可以这样:
if(e.getActionCommand().equals("上传")){ //e是 Actionevent,"上传"是按钮的标签
JFileChooser fileChooser = new JFileChooser();
int i = fileChooser.showOpenDialog(this.sf);
//sf.jd.setVisible(false);
if(i==JFileChooser.APPROVE_OPTION){
File selectedFile = fileChooser.getSelectedFile();
JTextField tf = new JTextField();
tf.setText(selectedFile.getName());
sf.tf.setText(selectedFile.getAbsolutePath()); //获得文件路径,sf是聊天窗口,是个主类,sf.tf是sf中的一个JTextFiled,你从这儿得到的路径可以在sf.tf中显示,然后"发送"按钮就可以将文件名读进去,再传输到另一方.
}
}
如果没看明白,可以继续问我.
sky123123
2009-03-31
打赏
举报
回复
五楼的大哥说的太对了,我就是按着这个思路进行的,现在最重要的是sendSingle()方法该如何实现,我用的是TCP。多谢了,俺在线等啊!!!!!!!!!
diggywang
2009-03-31
打赏
举报
回复
每个客户机都开一个serversocket,一旦一个客户机触发sendSignle事件,就请求另一个客户机的serversocket并建立连接线程(注意,一定要线程,否则没办法传多个文件),连接建立后由发送方将文件名传送给接受方,接受方收到请求后再显示相应的文件接收对话框,一旦允许接收并选择了存放的位置(发送同意接收信号给发送方),发送方此时开始从socket的outputstream中写入文件,而接受方从socket的inputstream中读取相关数据并写入文件。
sky123123
2009-03-31
打赏
举报
回复
嗯,这点我看明白了,多谢了。我的发送按钮是这样实现的:你请看
private JButton getSendFileButton() {
if (sendFileButton == null) {
sendFileButton = new JButton();
sendFileButton.setUI(new BasicButtonUI());
sendFileButton.setToolTipText("传送文件");
sendFileButton.setIcon(new ImageIcon(getClass().getResource("/sendFile.png")));
sendFileButton.setBackground(new Color(212, 231, 245));
sendFileButton.setBounds(new Rectangle(237, 261, 38, 25));
sendFileButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
if(fs.changefile() == null)
{
//什么也不做
}
else
{
sendSignle(fs.trueFileName); //发送一个信号
fs.startServerThread(); //用线程启动传送文件
}
}
});
sendFileButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseExited(java.awt.event.MouseEvent e) {
sendFileButton.setBackground(new Color(212, 231, 245));
}
public void mouseEntered(java.awt.event.MouseEvent e) {
sendFileButton.setBackground(new Color(0, 150, 200));
}
public void mousePressed(java.awt.event.MouseEvent e) {
sendFileButton.setBackground(new Color(212, 231, 255));
}
});
}
return sendFileButton;
}
最关键的问题是:
sendSignle(fs.trueFileName); //发送一个信号
这里出了问题,sendSingle()方法怎么样定义啊,我用的是TCP;其中trueFileName是要传输的文件名。
sky123123
2009-03-30
打赏
举报
回复
我也这样做了,单是文件名怎么发给对方呐,用的是TCP。
chaner2002
2009-03-30
打赏
举报
回复
这个我也做了..
可以这样,先将文件名发送过去,用File类的isFile()进行判断,紧接着进行传输,再用length()方法判别文件长度,不为空则new一个JDialog,JDialog添加
两个JButton,一个"是"一个"否",将JButton注册ActionListener事件监听,点击"是"按钮,用IO开始传输,点击"否"则不进行操作.
程序找不到了..提供下思路.
Java使用
TCP
和UDP
传输
文件
的源代码
本资源是使用 java,分别用
TCP
和 UDP
传输
文件
的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用
TCP
和 UDP
传输
文件
》可以参考,地址是:...
QT
TCP
文件
传输
我做的一个
TCP
文件
传输
的工具,可以在网络上
传输
任意大小的
文件
,最近在学习QT,希望有兴趣的朋友一起交流一下。如果对这个工具的代码有什么建设的发个邮件给我heqiangpc@sohu.com谢谢了。
TCP
文件
传输
系统(Version 1.6 多线程,断点续传,支持大
文件
传输
)
采用Visual C++ 6.0开发的一个
TCP
文件
传输
系统,采用多线程的
传输
方式,支持断点续传,利用配置
文件
设置基本的初始化信息。
文件
包括源代码和安装包,源代码里包括自定义的
文件
传输
通信协议。 程序采用分层的设计...
C# socket
TCP
大
文件
传输
同时实现断点续传
本程序是自己为公司服务器备份
文件
迁移写的一个基于socket
TCP
协议的大
文件
传输
应用程序。代码实现了基本流程,后期还有更改和优化。先把前期demo上传以流自己以后学习。如大家有需要可以下载一起探讨。
用
TCP
/socket实现windows与linux通信(
文件
传输
)
本
文件
传输
系统采用
TCP
协议进行通信,实现了windows与linux通信,打破了只能在windows下
传输
文件
的弊端,本程序的编写对通信编程新手有很大的帮助作用,本系统目前只支持windows向linux发送多种类型
文件
,大
文件
传输
...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章