java UDP传输文件 我最近在做一个课程设计,里面设计到用socket进行传输文件,我用的udp传输文件,这样要快一点,但是没想到当我传输的文件大于20M的时候就开始出问题了,大家有好点的用udp传输文件的例子吗?最好是能把思路说说,呵呵! 最近搞多线程,脑壳都搞大了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.net.*;import javax.swing.*; import java.awt.event.*;class 主机1Frame extends JFrame implements Runnable,ActionListener{ JTextField out_message=new JTextField("发送数据到主机2:"); JTextArea in_message=new JTextArea(); JButton b=new JButton("发送数据包到主机2"); 主机1Frame() { super("我是主机1"); setSize(200,200);setVisible(true); b.addActionListener(this); add(out_message,"South");add(in_message,"Center");add(b,"North"); Thread thread=new Thread(this); thread.start();//线程负责接收数据包 } public void actionPerformed(ActionEvent event) //点击按扭发送数据包 { byte buffer[]=out_message.getText().trim().getBytes(); try{ InetAddress address=InetAddress.getByName("127.0.0.1");DatagramPacket data_pack=new DatagramPacket(buffer,buffer.length, address,888); DatagramSocket mail_data=new DatagramSocket(); in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n"); in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n"); in_message.append("数据报长度:"+data_pack.getLength()+"\n"); mail_data.send(data_pack); } catch(Exception e){} } public void run() //接收数据包 { DatagramPacket pack=null; DatagramSocket mail_data=null; byte data[]=new byte[8192]; try{ pack=new DatagramPacket(data,data.length); mail_data=new DatagramSocket(666); } catch(Exception e){} while(true) { if(mail_data==null) break; else try{ mail_data.receive(pack); int length=pack.getLength(); InetAddress adress=pack.getAddress(); int port=pack.getPort(); String message=new String(pack.getData(),0,length); in_message.append("收到数据长度:"+length+"\n"); in_message.append("收到数据来自:"+adress+"端口:"+port+"\n"); in_message.append("收到数据是:"+message+"\n"); } catch(Exception e){} } }}public class 主机1{ public static void main(String args[]) { 主机1Frame 主机1win=new 主机1Frame(); 主机1win.validate(); }}import java.net.*;import javax.swing.*; import java.awt.event.*;class 主机2Frame extends JFrame implements Runnable,ActionListener{ JTextField out_message=new JTextField("发送数据到主机1:"); JTextArea in_message=new JTextArea(); JButton b=new JButton("发送数据包到主机1"); 主机2Frame() { super("我是主机2"); setSize(200,200);setVisible(true); b.addActionListener(this); add(out_message,"South");add(in_message,"Center");add(b,"North"); Thread thread=new Thread(this); thread.start();//线程负责接收数据包 } public void actionPerformed(ActionEvent event) { byte buffer[]=out_message.getText().trim().getBytes(); try{ InetAddress address=InetAddress.getByName("127.0.0.1");DatagramPacket data_pack=new DatagramPacket(buffer,buffer.length, address,666); DatagramSocket mail_data=new DatagramSocket(); in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n"); in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n"); in_message.append("数据报长度:"+data_pack.getLength()+"\n"); mail_data.send(data_pack); } catch(Exception e){} } public void run() { DatagramSocket mail_data=null; byte data[]=new byte[8192]; DatagramPacket pack=null; try{ pack=new DatagramPacket(data,data.length); mail_data=new DatagramSocket(888); } catch(Exception e){} while(true) { if(mail_data==null) break; else try{ mail_data.receive(pack); int length=pack.getLength(); InetAddress adress=pack.getAddress(); int port=pack.getPort(); String message=new String(pack.getData(),0,length); in_message.append("收到数据长度:"+length+"\n"); in_message.append("收到数据来自:"+adress+"端口:"+port+"\n"); in_message.append("收到数据是:"+message+"\n"); } catch(Exception e){} } }}public class 主机2{ public static void main(String args[]) { 主机2Frame 主机2win=new 主机2Frame(); 主机2win.validate(); }} 如何双击打开运行jar文件 JAVA中七段码 关于Jtable的问题 求一个日历控件 ,要 jComboBox下实现的! 在文件中改写指定字节数组的问题,谢谢大家 一个排序的问题 JAVA如何区分哪个是半角哪个是全角,两者如何转换. 关于取模的问题!50分! 会corba的近来看看? 考scjp最好用什莫书??前辈请指教 java 移~~~~ 位~~~ 的问题!看了半天google还是一头雾水 求教用JAVA写坦克的代码,最好能专打靠墙那种的
import javax.swing.*;
import java.awt.event.*;
class 主机1Frame extends JFrame implements Runnable,ActionListener
{ JTextField out_message=new JTextField("发送数据到主机2:");
JTextArea in_message=new JTextArea();
JButton b=new JButton("发送数据包到主机2");
主机1Frame()
{ super("我是主机1");
setSize(200,200);setVisible(true);
b.addActionListener(this);
add(out_message,"South");add(in_message,"Center");add(b,"North");
Thread thread=new Thread(this);
thread.start();//线程负责接收数据包
}
public void actionPerformed(ActionEvent event) //点击按扭发送数据包
{ byte buffer[]=out_message.getText().trim().getBytes();
try{ InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket data_pack=
new DatagramPacket(buffer,buffer.length, address,888);
DatagramSocket mail_data=new DatagramSocket();
in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n");
in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n");
in_message.append("数据报长度:"+data_pack.getLength()+"\n");
mail_data.send(data_pack);
}
catch(Exception e){}
}
public void run() //接收数据包
{ DatagramPacket pack=null;
DatagramSocket mail_data=null;
byte data[]=new byte[8192];
try{ pack=new DatagramPacket(data,data.length);
mail_data=new DatagramSocket(666);
}
catch(Exception e){}
while(true)
{ if(mail_data==null) break;
else
try{ mail_data.receive(pack);
int length=pack.getLength();
InetAddress adress=pack.getAddress();
int port=pack.getPort();
String message=new String(pack.getData(),0,length);
in_message.append("收到数据长度:"+length+"\n");
in_message.append("收到数据来自:"+adress+"端口:"+port+"\n");
in_message.append("收到数据是:"+message+"\n");
}
catch(Exception e){}
}
}
}
public class 主机1
{ public static void main(String args[])
{ 主机1Frame 主机1win=new 主机1Frame();
主机1win.validate();
}
}import java.net.*;
import javax.swing.*;
import java.awt.event.*;
class 主机2Frame extends JFrame implements Runnable,ActionListener
{ JTextField out_message=new JTextField("发送数据到主机1:");
JTextArea in_message=new JTextArea();
JButton b=new JButton("发送数据包到主机1");
主机2Frame()
{ super("我是主机2");
setSize(200,200);setVisible(true);
b.addActionListener(this);
add(out_message,"South");add(in_message,"Center");add(b,"North");
Thread thread=new Thread(this);
thread.start();//线程负责接收数据包
}
public void actionPerformed(ActionEvent event)
{ byte buffer[]=out_message.getText().trim().getBytes();
try{ InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket data_pack=
new DatagramPacket(buffer,buffer.length, address,666);
DatagramSocket mail_data=new DatagramSocket();
in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n");
in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n");
in_message.append("数据报长度:"+data_pack.getLength()+"\n");
mail_data.send(data_pack);
}
catch(Exception e){}
}
public void run()
{ DatagramSocket mail_data=null;
byte data[]=new byte[8192];
DatagramPacket pack=null;
try{
pack=new DatagramPacket(data,data.length);
mail_data=new DatagramSocket(888);
}
catch(Exception e){}
while(true)
{ if(mail_data==null) break;
else
try{ mail_data.receive(pack);
int length=pack.getLength();
InetAddress adress=pack.getAddress();
int port=pack.getPort();
String message=new String(pack.getData(),0,length);
in_message.append("收到数据长度:"+length+"\n");
in_message.append("收到数据来自:"+adress+"端口:"+port+"\n");
in_message.append("收到数据是:"+message+"\n");
}
catch(Exception e){}
}
}
}
public class 主机2
{ public static void main(String args[])
{ 主机2Frame 主机2win=new 主机2Frame();
主机2win.validate();
}
}