**使用TCP协议写一个可以上传文件的服务器和客户端**
TCP客户端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
* 使用TCP协议写一个可以上传文件的服务器和客户端
* TCP:客户端
* 思路:
* A:创建客户端Socket对象
* B:监听连接
* C:获取输入流和输出流,读取和写入数据;写入完毕,关闭输入流,并显示
* D:释放资源
*
*/
public class Test9_Client {
public static void main(String[] args) throws Exception{
// 创建客户端的Socket对象,建立连接
Socket s=new Socket("127.0.0.1",12345);
// 获取输出流 读取数据
OutputStream out = s.getOutputStream();
// 获取输入流 写入数据
InputStream in = s.getInputStream();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("d:\\aa.txt");
// 创建byte数组长度为1024
byte[] bys = new byte[1024];
int len = 0;
// 判断是否为空 ,写入数据
while((len=fis.read(bys)) != -1){
out.write(bys,0,len);
}
// 关闭输出流
s.shutdownOutput();
len = in.read(bys);
// 显示在控制台
System.out.println(new String(bys,0,len));
// 释放资源
fis.close();
s.close();
}
}
|
TCP服务端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 使用TCP协议写一个可以上传文件的服务器和客户端
* TCP:服务端
* 思路:
* A:创建服务器端Socket对象
* B:监听连接
* C:获取输入流和输出流,读取和写入数据;并显示
* D:释放资源
*/
public class Test9_Server {
public static void main(String[] args) throws Exception{
// 创建服务器端Socket对象
ServerSocket ss = new ServerSocket(12345);
// 监听连接
Socket s = ss.accept();//阻塞
// 创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:/TcpUpload.txt");
// 获取输入流 读取数据
InputStream in = s.getInputStream();
// 获取输出流 写入数据
OutputStream out = s.getOutputStream();
// 定义byte数组 长度为1024
byte[] buf = new byte[1024];
int len = 0;
// 判断是否为空,写入数据
while((len=in.read(buf)) != -1){
fos.write(buf,0,len);
}
// 写入"upload success..."字节数组数据
out.write("upload success...".getBytes());
// 释放资源
fos.close();
s.close();
ss.close();
}
}
|