package sterning;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class ClientTest {
private ClientSocket cs = null;
private String ip = "localhost";// 设置成服务器IP
private int port = 8821;
private String sendMessage = "Windwos";
public ClientTest() {
try {
if (createConnection()) {
sendMessage();
getMessage();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private boolean createConnection() {
cs = new ClientSocket(ip, port);
try {
cs.CreateConnection();
System.out.print("连接服务器成功!" + "\n");
return true;
} catch (Exception e) {
System.out.print("连接服务器失败!" + "\n");
return false;
}
}
private void sendMessage() {
if (cs == null)
return;
try {
cs.sendMessage(sendMessage);
} catch (Exception e) {
System.out.print("发送消息失败!" + "\n");
}
}
private void getMessage() {
if (cs == null)
return;
DataInputStream inputStream = null;
try {
inputStream = cs.getMessageStream();
} catch (Exception e) {
System.out.print("接收消息缓存错误\n");
return;
}
try {
//本地保存路径,文件名会自动从服务器端继承而来。
String savePath = "D:\\";
int bufferSize = 8192;
byte[] buf = new byte[bufferSize];
int passedlen = 0;
long len=0;
savePath += inputStream.readUTF();
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(savePath))));
len = inputStream.readLong();
System.out.println("文件的长度为:" + len + "\n");
System.out.println("开始接收文件!" + "\n");
while (true) {
int read = 0;
if (inputStream != null) {
read = inputStream.read(buf);
}
passedlen += read;
if (read == -1) {
break;
}
//下面进度条本为图形界面的prograssBar做的,这里如果是打文件,可能会重复打印出一些相同的百分比
System.out.println("文件接收了" + (passedlen * 100/ len) + "%\n");
fileOut.write(buf, 0, read);
}
System.out.println("接收完成,文件存为" + savePath + "\n");
fileOut.close();
} catch (Exception e) {
System.out.println("接收消息错误" + "\n");
return;
}
}
public static void main(String arg[]) {
new ClientTest();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Socket数据传输(简单而使用)
共9个文件
java:3个
class:3个
classpath:1个
3星 · 超过75%的资源 需积分: 7 15 下载量 102 浏览量
2011-08-24
16:05:14
上传
评论
收藏 9KB RAR 举报
温馨提示
Socket数据传输,实现了网路数据传输和局域网数据传输,有前端和客户端,对了解多线程有好处,不好之处请评分指教。:-) 补充(在ClientTest类里有一段代码如下: System.out.println("文件接收了" + (passedlen * 100/ len) + "%\n"); 修改为: System.out.println("文件接收了" + (passedlen * 100L/ len) + "%\n"); 在100后多加了"L",这样在传输大文件是显示百分比是正确的。 )
资源推荐
资源详情
资源评论
收起资源包目录
Socket.rar (9个子文件)
Socket
.project 382B
bin
sterning
ServerTest.class 2KB
ClientSocket.class 2KB
ClientTest.class 3KB
.settings
org.eclipse.jdt.core.prefs 629B
src
sterning
ServerTest.java 3KB
ClientTest.java 3KB
ClientSocket.java 2KB
.classpath 301B
共 9 条
- 1
资源评论
- arron95272012-09-11java写的,可以学习一下
zyg4518179
- 粉丝: 4
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功