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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qiaozengji668 中级黑马   /  2015-8-18 03:44  /  372 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.net.SocketException;

  7. public class Socket{

  8.         public static void main(String[] args) throws SocketException {
  9.                
  10.                 DatagramSocket send = new DatagramSocket();
  11.                 DatagramSocket rece = new DatagramSocket(11011);
  12.                 new Thread(new SendSocket(send)).start();
  13.                 new Thread(new ReceSocket(rece)).start();
  14.         }

  15. }
  16. class SendSocket implements Runnable {
  17.         DatagramSocket ds;
  18.         SendSocket(DatagramSocket ds){
  19.                 this.ds = ds;
  20.         }
  21.         public void run(){
  22.                 try {
  23.                         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  24.                         String line = null;
  25.                         while((line =bufr.readLine())!= null){
  26.                                 if("886".equals(line))
  27.                                         break;
  28.                                 byte [] buf = line.getBytes();
  29.                                 DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("172.17.55.107"),11011);
  30.                                 ds.send(dp);
  31.                         }
  32.                 }
  33.                 catch (Exception e) {
  34.                         throw new RuntimeException("发送端失败");
  35.                 }
  36.                 finally {
  37.                         ds.close();
  38.                 }
  39.         }
  40. }
  41. class ReceSocket implements Runnable{
  42.         DatagramSocket ds;
  43.         ReceSocket(DatagramSocket ds){
  44.                 this.ds = ds;
  45.         }
  46.         public void run(){
  47.                 try {
  48.                         while(true){
  49.                                 byte [] buf = new byte [1024];
  50.                                 DatagramPacket dp = new DatagramPacket(buf, buf.length);
  51.                                 ds.receive(dp);
  52.                                 String ip = dp.getAddress().getHostAddress();
  53.                                 String data = new String(dp.getData(),0,dp.getLength());
  54.                                 System.out.println(ip+"..."+data);
  55.                         }
  56.                 } catch (Exception e) {
  57.                         throw new RuntimeException("接收端失败");
  58.                 }
  59.         }
  60. }
复制代码

此程序有何问题,使用DOS命令行,怎样才能收到数据???

5 个回复

倒序浏览
看不懂、、、、、
回复 使用道具 举报
汗,你运行一下不就知道了
回复 使用道具 举报
复杂的样子,小白一枚
回复 使用道具 举报
你看一下 ip地址呢  如果接的路由器的话  感觉"172.17.55.107"这个ip不对啊 这个是网关地址吧
主机地址应该是192开头
回复 使用道具 举报
fmi110 发表于 2015-8-18 10:27
你看一下 ip地址呢  如果接的路由器的话  感觉"172.17.55.107"这个ip不对啊 这个是网关地址吧
主机地址应该 ...

谢谢,第一次获取自己的IP是这个,其他程序可以使用,
然后又获一次自己的IP,最后一段变了,
我表示很无奈{:2_39:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马