Java利用TCP协议发送文件(一)--服务器端
2014-05-07 15:04
411 查看
最近要写一个使用TCP进行文件传输的软件,考虑客户端是使用手机的,因此,准备采用Java作为开发语言,自己本身对于Java本不熟,还好,有个热心的网友已经将TA的代码公开了,有了这个基本原型,就可以进行进一步开发了。
服务器端采用的是TCP server socket监听端口,如果有客户端连接到服务器,就创建一个新的线程进行处理,在这个线程中,只接受客户端发送过来的数据,并保存发送过来的数据到指定文件中。
代码如下:
设置TCP Server Socket监听端口的类:
处理客户端请求的线程类:
服务器端采用的是TCP server socket监听端口,如果有客户端连接到服务器,就创建一个新的线程进行处理,在这个线程中,只接受客户端发送过来的数据,并保存发送过来的数据到指定文件中。
代码如下:
设置TCP Server Socket监听端口的类:
/** * */ package com.sheng.Server; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** * @author sheng * */ public class Server { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub // TCP 服务器监听6666端口 ServerSocket socket = new ServerSocket(6666); Socket client = null; while (true) { // 接收客户端连接 client = socket.accept(); System.out.println("Accept clinte."); // 处理客户端的连接 new Thread(new RecivingDataThread(client)).start(); } } }
处理客户端请求的线程类:
/** * */ package com.sheng.Server; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.Socket; /** * @author sheng * */ public class RecivingDataThread implements Runnable { private Socket Client = null; public static int NumberOfThreads = 0; public RecivingDataThread(Socket Client) { this.Client = Client; NumberOfThreads++; } public void run() { BufferedInputStream SocketInput = null; // TODO Auto-generated method stub try { SocketInput = new BufferedInputStream(Client.getInputStream()); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } // 接收文件的名字 FileNamePackage Name = new FileNamePackage(true); if (Name.Receive(SocketInput) != -1) { System.out.println("The name is " + Name.GetFileName()); } else { System.out.println("Cannot read the data."); } String ReceiveName = Name.GetFileName(); // 打开要写入的文件 FileOutputStream fos = null; try { fos = new FileOutputStream("D:/" + ReceiveName); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } BufferedOutputStream bos = new BufferedOutputStream(fos); System.out.println("Reading data."); // 接收文件数据 FileDataPackage Data = new FileDataPackage(true); while (Data.Receive(SocketInput) != -1) { Data.Write(bos); } // 关闭输出的文件和Socket try { bos.close(); fos.close(); SocketInput.close(); Client.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("client socket is end."); } }
相关文章推荐
- java 利用TCP协议从客户端向服务器端发送文件.(网络编程)
- Java利用TCP协议发送文件(四)--完整源代码
- Java利用TCP协议发送文件(二)--数据包设计
- Java利用TCP协议发送文件(三)--客户端设计
- [Java]利用Scoket发送各类文件-实例代码-长连接-极简代码-TCP协议
- java Socket 客户端向服务器端发送流(不是文件),服务器端read出现阻塞问题
- [Java]利用DOM解析DOM文件|利用socket发送XML DOM
- java,利用一个socket发送多个文件
- 利用TCP从客户端往服务器端发送一个文件过程中发生的问题
- 【TCP协议练习】服务端利用多线程TCP同时接受多个客户端发送文件
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
- Java利用socket连接到一台主机并向主机发送文件
- Java利用socket连接到一台主机并向主机发送文件
- 利用java Socket发送,接收文件.
- Java利用HttpURLConnection发送post请求上传文件
- Java利用HttpURLConnection发送post请求上传文件
- 利用swfupload实现java文件批量上传
- java利用dom4j对输入的任意对象生成xml文件
- 利用反射实现一个Java文件书写多个Servlet,无框架
- 利用Java实现对文件的简易Base64编码