UDP传输资料(java)

UDP传输文件(java)刚学完Java,用UDP实现文件传输,实现有规律接收包。Java学得不是很好,希望高手看到指点一

UDP传输文件(java)

刚学完Java,用UDP实现文件传输,实现有规律接收包。Java学得不是很好,希望高手看到指点一下。

还有部分代码未贴出,在下面附件中。

package com.way.client;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import java.net.SocketException;public class Client extends Thread {private DatagramSocket send;private DatagramPacket pkg;private DatagramPacket messagepkg;private int serverPort;private int clientPort;private String path;private File file;private String ip;public Client(int serverPort, int clientPort, String path, String ip) {super();this.serverPort = serverPort;this.clientPort = clientPort;this.path = path;this.ip = ip;}public String getPath() {return path;}public void setPath(String path) {this.path = path;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public void send() {try {//文件发送者设置监听端口send = new DatagramSocket(clientPort);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));//确认信息包byte[] messagebuf = new byte[1024];messagepkg = new DatagramPacket(messagebuf, messagebuf.length);//文件包byte[] buf = new byte[1024 * 63];int len;while ((len = bis.read(buf)) != -1) {pkg = new DatagramPacket(buf, len, new InetSocketAddress(ip, serverPort));//设置确认信息接收时间,3秒后未收到对方确认信息,则重新发送一次send.setSoTimeout(3000);while (true) {send.send(pkg);send.receive(messagepkg);System.out.println(new String(messagepkg.getData()));break;}}// 文件传完后,发送一个结束包buf = "end".getBytes();DatagramPacket endpkg = new DatagramPacket(buf, buf.length,new InetSocketAddress(ip, serverPort));System.out.println("文件发送完毕");send.send(endpkg);bis.close();send.close();} catch (SocketException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void run() {send();}}

?