在了解完TCP通信的使用方法后,我们介绍一下如何使用TCP通信实现客户端向服务端上镶毳呦躲传文件的功能,这邗锒凳审个功能和我们平时在各种场景下使用文件上传是一样的,首先要判断该文件名在服务端是否已经存在,不存在则上传。下面小编就带领大家来实现这个功能吧。
工具/原料
Eclipse开发工具
方法/步骤
1、首先在客户端我尺攵跋赈们提示输入要上传的文件路径,验证路径是否存在以及是否为文件夹。我们使用键盘录入的方法获取键盘输入的文件路径,因为可能会录入错误,因此使用while(true)循环接收键盘录淀尬逄攻入,判断文件路径是否正确以及是否为文件夹,若文件路径正确则返回该文件路径,并退出循环。
2、获取到文件路径后,接着在客户端创建Socket连接,并指定IP地址和端口号。然后将输入字节流包装成字符流,用于读取服务端发送过来的信息。同时创建PrintStream调用println()方法将文件名发送到服务端。
3、在服务端创建ServerSocket并设置监听端口,服务端使用while(true)循环的方式不停的接收服务端的请求,采用多线程机制,每来一个请求就创建一个线程,用于判断客户端发送过来的文件名是否存在,并返回给客户端相应的结果。
4、接着我们在客户端,通过获取服务端返回的结果给用户相应的通知,若文件在服务端已存在,则提示用户“请不要上传重复的文件”。若文件不存在则定义FileInputStream将文件内容写出到网络。
5、在服务端我们使用FileOutputStream将接收到的客户端文件写入到本地文件中,写入完成后注意要关闭输出流和socket,如下图所示。