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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 再见亦是泪 中级黑马   /  2013-1-22 08:55  /  1501 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-22 20:15 编辑

发送端
/**
*
*/
package cn.soft;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
* @author pc-fei
*
*/
public class UdpSendDemo {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {

                System.out.println("发送启动");
                DatagramSocket ds=new DatagramSocket();
                String str="我来了";
                byte[] buf=str.getBytes();
                DatagramPacket dp=new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.2"), 10000);
                ds.send(dp);
                ds.close();
        }

}
接收端
/**
*
*/
package cn.soft;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
* @author pc-fei
*
*/
public class UpdReceDemo {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {

                System.out.println("接收启动");
                DatagramSocket datagramSocket=new DatagramSocket(10000);
                byte[] buf=new byte[1024];
                DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length);
                datagramSocket.receive(datagramPacket);
                String ip=datagramPacket.getAddress().getHostAddress();
                int port=datagramPacket.getPort();
                String text=new String(datagramPacket.getData(),0,datagramPacket.getLength());
                System.out.println(ip+":"+port+":"+text);
                datagramSocket.close();
        }

}
我这样写然后运行就报错,接收端显示异常
接收启动
Exception in thread "main" java.net.SocketException: Unrecognized Windows Sockets error: 0: Cannot bind
        at java.net.PlainDatagramSocketImpl.bind0(Native Method)
        at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
        at java.net.DatagramSocket.bind(DatagramSocket.java:368)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:210)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:261)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:234)
        at cn.soft.UpdReceDemo.main(UpdReceDemo.java:23)
请同学们帮忙解决下 看哪里出错了

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 鼓励下吧

查看全部评分

8 个回复

倒序浏览
注意DatagramPacket dp=new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.2"), 10000);
这句中的ip地址是你本机的ip地址吗
回复 使用道具 举报
端口被占用了

不要用10000 换一个试试
回复 使用道具 举报
你写的代码没问题。我用你的代码在我本机上运行,就把ip地址换成我本机的ip地址运行正常
回复 使用道具 举报
没错呀 是我本机的IP
回复 使用道具 举报
yong230 发表于 2013-1-22 09:08
你写的代码没问题。我用你的代码在我本机上运行,就把ip地址换成我本机的ip地址运行正常 ...

是我机机的IP
回复 使用道具 举报
再见亦是泪 发表于 2013-1-22 09:26
是我机机的IP

会不会是我没连接网线 没有本地连接的原因
回复 使用道具 举报
那就有可能是1000端口被占用,在cmd中用网络命令netstat -ano 回车查看一下有没有进程占用1000端口,有的话换个没被占用的端口试试
回复 使用道具 举报
你的程序 我在我的机子上运行了下 没问题    英文不行,错误信息看不懂啊  建议你自己好好再调试下。  其实对于程序BUG自己调试收获会更大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马