黑马程序员技术交流社区
标题: 导包后也无法使用类中的方法 [打印本页]
作者: 王龙彪 时间: 2012-7-19 18:49
标题: 导包后也无法使用类中的方法
本帖最后由 王龙彪 于 2012-7-19 22:18 编辑
- import java.net.*;
- public class UdpTest
- {
- public static void main(String[] args)throws Exception
- {
- //new UdpSend();
- System.out.print("hahaha");
- }
-
- public static void sop(Object object)
- {
- System.out.println(object);
- }
- }
- class UdpSend
- {
- DatagramSocket ds = new DatagramSocket();
- byte[] buffer = "vivi vikarm ...".getBytes();
- DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 4444);
-
- ds.send(buffer);////就是这里,我已经导入包了,还是无法使用send()函数,下面的close()也一样报错
- ds.close();
- }
复制代码
作者: 张世威 时间: 2012-7-19 19:07
- class UdpSend
- {
- DatagramSocket ds = new DatagramSocket();
- byte[] buffer = "vivi vikarm ...".getBytes();
- DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 4444);
- ds.sent(buffer);////就是这里,我已经导入包了,还是无法使用sent()函数,下面的close()也一样报错
- ds.close();
- }
1、你看看你这个类能这样写吗?
- ds.sent(buffer);////就是这里,我已经导入包了,还是无法使用sent()函数,下面的close()也一样报错
- ds.close();
这两句算这个类的什么?属性、方法、??
1
2、建议你把这2局放到一个方法里面。
作者: 周玉龙 时间: 2012-7-19 19:13
DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和发送数据报,Java使用DatagramPacket来代表数据报,
DatagramSocket接收和发送的数据都是通过DatagramPacket对象完成的。
send(DatagramPacket p):以该DatagramSocket对象向外发送数据报。
使用DatagramSocket发送数据报时,DatagramSocket并不知道将该数据报发送到哪里,而是由DatagramPacket自身决定数据报的目的。就像码头并不知道每个集装箱的目的地,码头只是将这些集装箱发送出去,而集装箱本身包含了该集装箱的目的地。
我觉得楼主应该是把那个方法名写错了。sent应该是想写成send,我在API没有找到楼主写的sent方法。而且send方法的参数必须是DatagramPacket类的一个对象,可以把它看成一个包裹。
而不能是一个byte类型的数组。所以说参数错了。
他不产生IO流。所以不存在关流的closed()方法。希望对你有帮助。
作者: 王龙彪 时间: 2012-7-19 19:15
张世威 发表于 2012-7-19 19:07 class UdpSend{ DatagramSocket ds = new DatagramSocket();
谢谢提醒,本来是放到主类的一个方法里面的
作者: 王宝康 时间: 2012-7-19 19:18
java类中只是定义它的属性,以及对外提供的方法,send()以及是close()方法是通过对象调用的- package demo;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UdpTest
- {
- public static void main(String[] args)throws Exception
- {
- DatagramSocket ds = new DatagramSocket();
- byte[] buffer = "vivi vikarm ...".getBytes();
- DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 4444);
- ds.send(dp);
- ds.close();
- System.out.print("hahaha");
- }
-
- }
复制代码
作者: 罗宵 时间: 2012-7-19 20:03
class UdpSend
{
DatagramSocket ds = new DatagramSocket();
byte[] buffer = "vivi vikarm ...".getBytes();
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("localhost"), 4444);
ds.send(buffer);////就是这里,我已经导入包了,还是无法使用send()函数,下面的close()也一样报错
ds.close();
}
send()方法里面应该是打包的dp,不是放数组buffer。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |