黑马程序员技术交流社区

标题: UDP的接受与发送 [打印本页]

作者: 凝聚    时间: 2013-11-30 08:20
标题: UDP的接受与发送
本帖最后由 凝聚 于 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.关闭资源
        }
}



作者: 25343215    时间: 2013-11-30 08:52
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
这个错误的意思是:地址已经在使用:不能绑定。楼主可以换个端口试一下,或者关闭已经占用的端口
作者: 凝聚    时间: 2013-11-30 08:56
25343215 发表于 2013-11-30 08:52
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
这个错误的意 ...

换过了,不知道哪个端口没被占用啊,我在电脑上查所有端口,可是cmd这个窗口说 不认识这个符号     C:\>netstat -ano
作者: 凝聚    时间: 2013-11-30 08:57
换过了,不知道哪个端口没被占用啊,我在电脑上查所有端口,可是cmd这个窗口说 不认识这个符号     C:\>netstat -ano




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2