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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 丿Show╭尛__儍 于 2013-8-26 20:02 编辑

这代码,这疑问,我还以为代码出错了,一个字母一个字母的早,空格也不放过,可是最后还是无功而反,真郁闷。后来拿了毕老师的代码运行,还是不行,我勒个去,咋搞的。我晕头转向。我就想上论坛求助了,但还是没上。决定在奋战一下。虽然问题是可以运行了,可是{:soso_e126:}.....
  1. package net;

  2. import java.io.*;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;

  6. /**
  7. * @param args
  8. *         要求
  9. *  编写一个聊天程序。
  10.         有收数据的部分,和发数据的部分。
  11.         这两部分需要同时执行。
  12.         那就需要用到多线程技术。
  13. */
  14. class Send implements Runnable {
  15.         private DatagramSocket ds;

  16.         public Send(DatagramSocket ds) {
  17.                 this.ds = ds;
  18.         }
  19.         public void run() {
  20.                 try {
  21.                         BufferedReader br = new BufferedReader(new InputStreamReader(
  22.                                         System.in));
  23.                         String line = null;

  24.                         while ((line = br.readLine()) != null)
  25.                         {
  26.                                 if ("886".equals(line))
  27.                                         break;
  28.                         byte[] buf = line.getBytes();
  29.                         DatagramPacket dp = new DatagramPacket(buf, buf.length,
  30.                                         InetAddress.getByName("3K1C53PJAAGBD06"), 53177);
  31.                         //---------------------------------------------------------------------------
  32.                         //运行结果本机IP是192.168.0.101,前面输入IP不行,后来重启了电脑。我去。竟然101也行,255也行。真活见鬼了
  33.                         ds.send(dp);
  34.                         }
  35.                 } catch (Exception e) {
  36.                         // TODO Auto-generated catch block
  37.                         throw new RuntimeException("sssss");
  38.                 }
  39.         }
  40. }
  41. class Rece implements Runnable {
  42.         private DatagramSocket ds;

  43.         public Rece(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 value = new String(dp.getData(), 0, dp.getLength());
  54.                                 System.out.println(ip + ":" + value);
  55.                         }
  56.                 } catch (Exception e) {
  57.                         // TODO Auto-generated catch block
  58.                         throw new RuntimeException("sssss");
  59.                 }
  60.         }
  61. }
  62. class ChatDemo {
  63.         public static void main(String[] args) throws Exception {
  64.                 // TODO Auto-generated method stub
  65.                 DatagramSocket sendds = new DatagramSocket();
  66.                 DatagramSocket receds = new DatagramSocket(53177);
  67.                 new Thread(new Send(sendds)).start();
  68.                 new Thread(new Rece(receds)).start();
  69.         }
  70. }
复制代码
当我写到TCP的时候,你又来了.....(如下图)
[img]file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\771422264\QQ\WinTemp\RichOle\}{C0Z@[U~R[WGJ58H}@N16O.jpg[/img]
我现在什么话都不想说,只想把你这该死的电脑重启又重启又重启。{:soso_e111:}(我也不懂什么原因反正我重启之后就行了。)

}{C0Z@[U~R[WGJ58H}@N16O.jpg (113.36 KB, 下载次数: 26)

}{C0Z@[U~R[WGJ58H}@N16O.jpg

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

7 个回复

正序浏览
Jiewin 发表于 2013-8-23 18:03
楼主是不是端口被占用了

端口没被占用。不是端口问题
回复 使用道具 举报
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
楼主是不是端口被占用了
回复 使用道具 举报
丿Show╭尛__儍 发表于 2013-8-23 14:26
3K1C53PJAAGBD06是我的计算机名。我说的是我的电脑重启之前都没效果。运行不起来。重启之后改我的IP也可 ...

既然重启之后可以了,那就哦了,想太多脑袋疼的
回复 使用道具 举报
神之梦 发表于 2013-8-23 13:58
没怎么明白楼主到底是要问TCP的还UDP的,你帖的UDP的代码里边除了这句里边的字符串我看不懂以外:
InetAddr ...

3K1C53PJAAGBD06是我的计算机名。我说的是我的电脑重启之前都没效果。运行不起来。重启之后改我的IP也可以运行。重启之前写我的IP就是不行

TCP我的服务端代码在另一个类中我没截图过来。这是客户端代码,服务端和客户端都没有问题,
只是,重启之前TCP这边的代码就报这个错误!!!!

回复 使用道具 举报
没怎么明白楼主到底是要问TCP的还UDP的,你帖的UDP的代码里边除了这句里边的字符串我看不懂以外:
InetAddress.getByName("3K1C53PJAAGBD06"), 53177);改成我的ip就可以正常运行。
至于楼主后面的TCP的截图是神马意思?你只帖除了客户端的代码,服务端的代码没有写还是?
异常提示应该是连接超时
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马