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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 铃铃铃铃铃锋 金牌黑马   /  2015-5-30 14:48  /  2113 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

10黑马币

import java.net.*;
import java.io.*;
class  UdpSend2
{
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds = new DatagramSocket();

                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        if("886".equals(line))
                                break;

                        byte[] buf = line.getBytes();

                        DatagramPacket dp =
                                new DatagramPacket(buf,buf.length,InetAddress.getByName("122.244.162.113"),10002);

                        ds.send(dp);
                }
                ds.close();
        }
}



class  UdpRece2
{
        public static void main(String[] args) throws Exception
        {


                DatagramSocket ds = new DatagramSocket(10002);

                while(true)
                {
                        byte[] buf = new byte[1024];
                        DatagramPacket dp = new DatagramPacket(buf,buf.length);

                        ds.receive(dp);

                        String ip = dp.getAddress().getHostAddress();
                        String data = new String(dp.getData(),0,dp.getLength());


                        System.out.println(ip+"::"+data);
                }
        }
}
代码是毕老师那资料上拷来的  只改了ip地址 可是端口就是有问题 也不知道是什么问题 应该是我自己电脑上的问题 就是不知道哪要改


捕获.PNG (5.45 KB, 下载次数: 4)

捕获.PNG

最佳答案

查看完整内容

是在本机弄接收和发送的吗? 首先 class UdpSend2 { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket();//这里建立UDP的Socket服务时,需要确定一个用于发送的端口号,你接收的端口号是10002,这里改成10000应该是没问题的,只要不是10002就不会冲突 其次如果还不能解决问题: 把发送和接收的类实现Runnable接口,然后用多线程试试。 改过 ...

10 个回复

倒序浏览
是在本机弄接收和发送的吗?
首先
class  UdpSend2
{
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds = new DatagramSocket();//这里建立UDP的Socket服务时,需要确定一个用于发送的端口号,你接收的端口号是10002,这里改成10000应该是没问题的,只要不是10002就不会冲突

其次如果还不能解决问题:
把发送和接收的类实现Runnable接口,然后用多线程试试。

改过端口应该就没问题了。

UDP如果在本机上测试发送和接收尤其要注意发送的Socket的端口。
回复 使用道具 举报
                  DatagramPacket dp = new DatagramPacket(buf,buf.length);    这是44行
回复 使用道具 举报
开了Rrce 端口就被建立了  可是一运行Send 接收就出现错误  端口也没了
回复 使用道具 举报
过来学习一下,自己还没学到socket这一块
回复 使用道具 举报
换成Tcp传输也是错的  这次错误提示是select failed  谁来救救我啊

捕获2.PNG (3.93 KB, 下载次数: 4)

捕获2.PNG
回复 使用道具 举报
林RM 中级黑马 2015-5-30 17:56:38
7#
看不懂,怎么办
回复 使用道具 举报
重装了jdk就好了= =  虽然不知道为什么 但是还是很开心 终结~
回复 使用道具 举报
学习就是要正视出现的问题   加油
回复 使用道具 举报
唔,才看到,谢谢楼主给了分,不过木有解决楼主的问题2333333333

回复 使用道具 举报

要顶
必须顶
不得不顶
用尽全力顶
再加上千斤顶
总之把它顶到顶
接着使出葵花宝顶
就算顶到史前也要顶
老子看了会用道德经顶
孔子亲自拜你为师天天顶
秦始皇站在阿房宫上使劲顶
汉高祖挥师杀向东罗马为你顶
吕布抛弃了貂禅而选择了帮你顶
张三丰见了后用太极拳九式全力顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马