本帖最后由 凝聚 于 2013-11-30 10:31 编辑
我用两个类分别写接收段誉发送端,但是运行结束段在运行法宋端时总是出现错误:
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at twenty_three.UpRece.main(UpRece.java:22)
我的代码如下:
package twenty_three;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
接收端
*/
class UpRece
{
public static void main(String[]args) throws Exception
{
//1.建立Udp,Socket端点
DatagramSocket ds=new DatagramSocket(8089);
//2.定义数据包,用于存储数据。
byte[]buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
//3.通过服务的receive方法将受到的数据存到数据包中。
ds.receive(dp);
//4.通过数据包中的方获取其中的数据。
String ip=dp.getAddress().getHostAddress();//获取对象名,将对象名转化成字符串。
String data=new String (dp.getData(),0,dp.getLength());//从零开始读取到自付串的长度。
int port=dp.getPort();
System.out.println(ip+"..."+data+"..."+port);
//关闭资源
ds.close();
}
}
package twenty_three;
import java.net.*;
/
*
发送端 */
public class seven {
public static void main(String[] args) throws Exception{
//1.创建UDP服务,通过datagramSocket对象
DatagramSocket ds=new DatagramSocket();
//2.确定数据,并封装成数据包,DatagramSocket ,buf,int,lengh,inetAddress address,int part
byte[]buf="我来了".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.106.88"),8089);
//3.通过socket 服务,将已有的数据包发送出去,通过sent 方法。
ds.send(dp);
//4.关闭资源
}
}
|