A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 凝聚 中级黑马   /  2013-11-30 08:20  /  1525 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 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.关闭资源
        }
}


评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 神马都是浮云

查看全部评分

3 个回复

倒序浏览
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
这个错误的意思是:地址已经在使用:不能绑定。楼主可以换个端口试一下,或者关闭已经占用的端口
回复 使用道具 举报
25343215 发表于 2013-11-30 08:52
Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
这个错误的意 ...

换过了,不知道哪个端口没被占用啊,我在电脑上查所有端口,可是cmd这个窗口说 不认识这个符号     C:\>netstat -ano
回复 使用道具 举报
换过了,不知道哪个端口没被占用啊,我在电脑上查所有端口,可是cmd这个窗口说 不认识这个符号     C:\>netstat -ano
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马