黑马程序员技术交流社区

标题: 一个简单的网络编程问题 [打印本页]

作者: 张小龙    时间: 2012-9-22 20:59
标题: 一个简单的网络编程问题
本帖最后由 张小龙 于 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来运行
作者: 蔡汉康    时间: 2012-9-22 21:50
可能是因为你的类文件**.class没有都放在同一个目录下
作者: 梁志冰    时间: 2012-9-22 21:57
本帖最后由 梁志冰 于 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, 下载次数: 112)

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

作者: 张小龙    时间: 2012-9-22 22:15
andychua 发表于 2012-9-22 21:50
可能是因为你的类文件**.class没有都放在同一个目录下

哥们儿,我发了的哈
作者: 张小龙    时间: 2012-9-22 22:15
梁志冰 发表于 2012-9-22 21:57
接收方:
import java.net.DatagramPacket;
import java.net.DatagramSocket;

谢谢了,我两个都放在一起的,呵呵
作者: 王海宇    时间: 2012-9-23 09:56
将控制台的工作目录切换到你的class文件所在的目录,然后java socket.send   如果类是放在包里面的,类名前面不要忘记写完整的包名。具体原因你可以参照一下我发的这个提问帖 http://bbs.itheima.com/thread-26062-1-1.html
作者: 张小龙    时间: 2012-9-24 00:35
王海宇 发表于 2012-9-23 09:56
将控制台的工作目录切换到你的class文件所在的目录,然后java socket.send   如果类是放在包里面的,类名前 ...

原来真是包名的问题 晕




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