黑马程序员技术交流社区

标题: 一个基础的端口接收的问题 [打印本页]

作者: 铃铃铃铃铃锋    时间: 2015-5-30 14:48
标题: 一个基础的端口接收的问题

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

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

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

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

UDP如果在本机上测试发送和接收尤其要注意发送的Socket的端口。

作者: 铃铃铃铃铃锋    时间: 2015-5-30 14:49
                  DatagramPacket dp = new DatagramPacket(buf,buf.length);    这是44行
作者: 铃铃铃铃铃锋    时间: 2015-5-30 14:51
开了Rrce 端口就被建立了  可是一运行Send 接收就出现错误  端口也没了
作者: 山崩地裂    时间: 2015-5-30 15:00
过来学习一下,自己还没学到socket这一块

作者: 铃铃铃铃铃锋    时间: 2015-5-30 17:33
换成Tcp传输也是错的  这次错误提示是select failed  谁来救救我啊

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

捕获2.PNG

作者: 林RM    时间: 2015-5-30 17:56
看不懂,怎么办
作者: 铃铃铃铃铃锋    时间: 2015-5-30 20:06
重装了jdk就好了= =  虽然不知道为什么 但是还是很开心 终结~
作者: lucien_he    时间: 2015-6-1 17:25
学习就是要正视出现的问题   加油
作者: rexih    时间: 2015-6-1 18:30
唔,才看到,谢谢楼主给了分,不过木有解决楼主的问题2333333333


作者: 土木大戏    时间: 2015-7-9 20:35

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





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