问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java网络编程:程序问题,接收不到数据

发布网友 发布时间:2022-04-23 03:50

我来回答

5个回答

热心网友 时间:2023-10-13 21:05

这是java网络编程里的UDPServer 和UDPClient 之间简单通信程序啊,等等我看看你的程序再说

你想要的是不是这种效果?


import java.net.*;


class UdpSend{

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

        //1.创建udp服务,通过DatagramSocket对象

        DatagramSocket ds = new DatagramSocket(8888);//---这儿的端口号不要和UdpRece的一样


        //2.确定数据,并封装成数据包。

        //DatagramPacket(byte[] buf, int length, InetAddress address, 


int port) 

            //构造数据报包,用来将长度为 length 的包发送到指定主机上的


指定端口号。

        byte[] buf = "udp shu ju lai le".getBytes();

        DatagramPacket dp = 

            new DatagramPacket(buf,buf.length,InetAddress.getByName


("169.254.200.14"),10000);//----这儿的端口号保持与UdpRece一样


        //3.通过Socket服务,将已有的数据包发送出去。通过send方法。

        ds.send(dp);


        //4.关闭资源

        ds.close();

    }

}

最后想说,先运行UdpRece 再运行UdpSend,反过来UdpSend要运行2遍

热心网友 时间:2023-10-13 21:05

1、UDPRece的DatagramSocket需指定端口。

2、UdpSend的DatagramPacket的目标端口需要和UDPRece的DatagramSocket的端口一致。

import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
  public static void main(String[] args) throws Exception {
    // 1.创建udp Socket,建立端点
    DatagramSocket ds = new DatagramSocket(20000);
    // 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);
    // 4.关闭资源
    ds.close();
  }
}

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSend {
  public static void main(String[] args) throws Exception {
    // 1.创建udp服务,通过DatagramSocket对象
    DatagramSocket ds = new DatagramSocket(10000);
    // 2.确定数据,并封装成数据包。
    // DatagramPacket(byte[] buf, int length, InetAddress address, int port)
    // 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
    byte[] buf = "udp shu ju lai le".getBytes();
    DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.100"),
        20000);
    // 3.通过Socket服务,将已有的数据包发送出去。通过send方法。
    ds.send(dp);
    // 4.关闭资源
    ds.close();
  }
}

热心网友 时间:2023-10-13 21:06

你这发送方和接收方的端口都弄混了。。

UdpSend中的DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000)端口改为与10000不同的,比如改为10001;UdpRece中的端口改为对应的10001,DatagramSocket ds = new DatagramSocket(10001);

热心网友 时间:2023-10-13 21:06

你换个端口试试,有时候端口被其他程序占用就收发不了。

热心网友 时间:2023-10-13 21:07

1、UDPRece的DatagramSocket需指定端口。
2、UdpSend的DatagramPacket的目标端口需要和UDPRece的DatagramSocket的端口一致。

import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
public static void main(String[] args) throws Exception {
// 1.创建udp Socket,建立端点
DatagramSocket ds = new DatagramSocket(20000);
// 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);
// 4.关闭资源
ds.close();
}
}

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSend {
public static void main(String[] args) throws Exception {
// 1.创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket(10000);
// 2.确定数据,并封装成数据包。
// DatagramPacket(byte[] buf, int length, InetAddress address, int port)
// 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
byte[] buf = "udp shu ju lai le".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.100"),
20000);
// 3.通过Socket服务,将已有的数据包发送出去。通过send方法。
ds.send(dp);
// 4.关闭资源
ds.close();
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小弟刚升到80级是法师 应该怎么弄装备啊 从哪里开始弄起 还有就是网上... 门上指纹锁要多少钱 手机百度如何搜索图片来源? 如何找出图片出处 win7电脑横屏如何处理笔记本电脑桌面变成横向了怎么办 win7电脑桌面反了怎么办电脑屏幕倒过来了怎么办 win7电脑变成竖屏快捷键我电脑变成竖屏了怎么调回来 win7系统电脑怎么横屏w7系统屏幕怎么横过来 win7系统更改电脑屏幕方向电脑屏幕旋转了怎么调整过来 调成竖屏模式电脑win7我电脑变成竖屏了怎么调回来 学习网络编程和编写应用程序哪个简单更有前途?(用C#) 网络编程一般用什么语言实现? 网络编程是什么东西,它跟我学习C++,windowsAPI还有MFC有什么关系,网络编程我都不知道是什么东西 java网络编程的基本内容有哪些?其特点和优势如何?请进行论述。_百度知 ... 什么是网络程序? Java程序设计之网络编程的内容简介 c程序如何在windows下进行网络编程? 网络应用程序设计是指什么? socket网络编程,写一个Helloworld程序 控制台程序如何进行网络编程? 常用的网络编程语言有哪些? 在哪些场景需要应用网络编程? 网络程序与一般的单机环境运行的程序有何不同? 程序设计和网络编程有什么区别,分别包括哪些内容? 黑裤子不小心被八四滴了几滴,怎么办? 我的一条黑色休闲裤不小心溅上了一滴502胶水,后来变硬了。有什么好方法可以除去?不损害裤子 黑色裤子沾到别的颜色的东西,洗不掉怎么办 我的黑裤子不小心滴了几滴84消毒液 现在变成几个小黄点 那条裤子太好了 不忍心扔掉 怎么办啊 有什么办法 黑色的裤子不小心洒到有漂白水变色了怎么办?可以恢复原样吗? 黑色的裤子不小心滴上了84消毒液,裤子有一块变红了,怎么办? 黑裤子不小心洒上84褪色了,怎么补救? 网络编程方面的,最好是java的 NBA中的双塔是什么? NBA历史上最强的双塔组合是谁?当年他们的实力到底有多强? NBA历史上有哪些实力强劲的内线双塔组合? 什么是nba双塔组合 篮球中的双塔是什么意思 李慕豪和范子铭的双塔组合为首钢取得不错的战绩,他们的默契是如何形成的? 什么是双塔阵容?? 双塔组合为什么不参加汤姆斯杯 微信怎么群发红包?给所有好友发红包。 首钢双塔组合为首钢先后战胜广东与浙江,你如何评价李慕豪和范子铭的双塔? NBA历史上比较可惜的3对组合都有谁? 双塔组合夺得羽毛球男双银牌,比赛过程如何? 微信群发红包上限怎么解决? 中药右归,左归有什么区别 nba历史上最强的双塔组合是谁? 右归胶囊和左归胶囊药效样吗? 易建联昔日队友将回归,将联手王哲林夺冠了吗? 路边扫码自行车需要下载什么软件吗?怎么用? NBA历史上实力最强4个内线双塔组合,有怎样传奇的经历?