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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张小龙 中级黑马   /  2012-9-22 20:59  /  1700 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张小龙 于 2012-9-24 00:37 编辑

最近看了毕老师的网络编程视频,对网络编程有了些了解,不过也遇到了一个问题
代码如下:接收方
package socket;
import java.net.*;   //首先定义DatagramSocket 然后定义datagramPacket 接收数据  打印到控制台  最后输出
public class Receive {
public static void main(String[] args) throws Exception{
  DatagramSocket ds=new DatagramSocket(10001);
  byte[] b=new byte[1024];
  DatagramPacket dp=new DatagramPacket(b,b.length);
  ds.receive(dp);
  String ipname=dp.getAddress().getHostAddress();
  String data=new String(b,0,dp.getLength());
  int port = dp.getPort();
  System.out.println("ip:"+ipname+" 数据为:"+data+" 端口为:"+port);}}
下面是 发送方:package socket;
import java.net.*;  //首先定义datagramSocket 定义数据 封装到packet内 然后发送 关闭
public class Send {
public static void main(String[] args)throws Exception{
  DatagramSocket ds=new DatagramSocket(24354);
  byte[] b="hello world".getBytes();
  DatagramPacket dp=new DatagramPacket(b,b.length,InetAddress.getByName("127.0.0.1"),10001);
  ds.send(dp);
  ds.close();}}
然后就是这个简单的程序,但是这个程序在dos下运行结果却显示了这个

求高手指点下,现在我只能左边开着myeclipse,然后右边开着eclipse来运行

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
可能是因为你的类文件**.class没有都放在同一个目录下
回复 使用道具 举报
本帖最后由 梁志冰 于 2012-9-22 22:01 编辑

接收方:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
class Receive {
public static void main(String[] args) throws Exception{
  System.out.println("接收端启动.....");
  DatagramSocket ds=new DatagramSocket(10001);
  byte[] b=new byte[1024];
  DatagramPacket dp=new DatagramPacket(b,b.length);
  ds.receive(dp);
  String ipname=dp.getAddress().getHostAddress();
  String data=new String(b,0,dp.getLength());
  int port = dp.getPort();
  System.out.println("ip:"+ipname+" 数据为:"+data+" 端口为:"+port);
  System.out.println("接收端关闭.....");}}

发送方:
import java.net.*;  //首先定义datagramSocket 定义数据 封装到packet内 然后发送 关闭
class Send {
public static void main(String[] args)throws Exception{
  System.out.println("接收端启动.....");
  DatagramSocket ds=new DatagramSocket(24354);
  byte[] b="hello world".getBytes();
  DatagramPacket dp=new DatagramPacket(b,b.length,InetAddress.getByName("127.0.0.1"),10001);
  ds.send(dp);
  ds.close();
System.out.println("接收端关闭.....");}}

运行结果:(如附件图)
使用Dos控台编译是可以成功的,估计是你的字节码文件(*.class)没有放在桌面吧,建议将其都放到同一磁盘的目录下进行编译试试



MN1D[OTO{NSC6W2$L28M]@K.jpg (35.63 KB, 下载次数: 109)

MN1D[OTO{NSC6W2$L28M]@K.jpg

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
andychua 发表于 2012-9-22 21:50
可能是因为你的类文件**.class没有都放在同一个目录下

哥们儿,我发了的哈
回复 使用道具 举报
梁志冰 发表于 2012-9-22 21:57
接收方:
import java.net.DatagramPacket;
import java.net.DatagramSocket;

谢谢了,我两个都放在一起的,呵呵
回复 使用道具 举报
将控制台的工作目录切换到你的class文件所在的目录,然后java socket.send   如果类是放在包里面的,类名前面不要忘记写完整的包名。具体原因你可以参照一下我发的这个提问帖 http://bbs.itheima.com/thread-26062-1-1.html

评分

参与人数 1技术分 +1 收起 理由
admin + 1 参与有奖

查看全部评分

回复 使用道具 举报
王海宇 发表于 2012-9-23 09:56
将控制台的工作目录切换到你的class文件所在的目录,然后java socket.send   如果类是放在包里面的,类名前 ...

原来真是包名的问题 晕
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马