- 论坛徽章:
- 0
|
网络编程里面最简单的一个tcp程序,把一个文件从客户端上传到服务器端,上传成功后服务器端提示上传完成。代码不多,一个服务端和一个客户端。
服务端代码:- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class ServerDemo {
- public static void main(String[] args) throws IOException {
- // 创建服务端Socket对象
- ServerSocket ss = new ServerSocket(1299);
- // 监听客户端tcp连接
- Socket s = ss.accept();
- //定义输入流以读取客户端上传文件
- InputStream is = s.getInputStream();
- //创建文件字节流输出对象,将读入的字节流写入文件
- FileOutputStream fos = new FileOutputStream("F:\\UUcall.exe");
- byte[] bys = new byte[1024];
- int length = 0;
- while ((length = is.read(bys)) != -1) {
- fos.write(bys, 0, length);
- }
- //禁用套接字输入流
- s.shutdownInput();
- //创建套接字输出流,向客户端发送消息
- OutputStream os = s.getOutputStream();
- //提示客户端文件上传成功
- os.write("Upload successfully.".getBytes());
- fos.close();
- s.close();
- }
- }
复制代码 客户端代码:- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.Socket;
- public class ClientDemo {
- public static void main(String[] args) throws IOException{
- //创建客户端Socket对象,并指定服务器地址及端口号
- Socket s = new Socket("127.0.0.1",1299);
- //调用getOutputStream()方法产生输出流对象
- OutputStream os = s.getOutputStream();
- //创建本地文件字节流对象,模拟文件上传操作
- FileInputStream fis = new FileInputStream(new File("D:\\UUcall.exe"));
- //定义字节数组,每读取2048字节写一次
- byte[] bys = new byte[2048];
- //记录每次实际读取长度
- int length = 0;
- while ((length = fis.read(bys))!=-1) {
- os.write(bys,0,length);
- }
- //禁用Socket对象的输出流
- s.shutdownOutput();
- //获取Socket对象的输入流以读取服务器回送消息
- InputStream is = s.getInputStream();
- byte[] msg = new byte[1024];
- int len = is.read(msg);
- String string = new String(msg,0,len);
- System.out.println(string);
- //关闭文件字节流对象
- fis.close();
- //关闭此套接字对象
- s.close();
- }
- }
复制代码 |
|