《Java就业培训教程》_张孝祥_书内源码_11

《Java就业培训教程》 作者:张孝祥 书中源码
《Java就业培训教程》P374源码
发送程序:UdpSend.java
import java.net.*;
public class UdpSend
{
 public static void main(String [] args) throws Exception
 {
  DatagramSocket ds=new DatagramSocket();
  String str="hello world";
  DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("192.168.0.213"),3000);
  ds.send(dp);
  ds.close();
 }
}

接收程序:UdpRecv.java
import java.net.*;
public class UdpRecv
{
 public static void main(String [] args) throws Exception
 {
  DatagramSocket ds=new DatagramSocket(3000);
  byte [] buf=new byte[1024];
  DatagramPacket dp=new DatagramPacket(buf,1024);
  ds.receive(dp);
  String strRecv=new String(dp.getData(),0,dp.getLength()) +
  " from " + dp.getAddress().getHostAddress()+":"+dp.getPort();
  System.out.println(strRecv);
  ds.close();
 }
}
《Java就业培训教程》P378源码
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class Chat
{
 Frame f=new Frame("我的聊天室");
 TextField tfIP=new TextField(15);
 List lst=new List(6);
 DatagramSocket ds;
/*由于DatagramSocket的构造函数声明可能抛出异常,我们的程序需要用try…catch语句
进行异常捕获处理,所以不能直接在这里调用DatagramSocket的构造函数对ds进行初始化,
我们需要将ds的初始化放在Chat类的构造函数中去完成。*/
 public Chat()
 {
         try
         {
             ds=new DatagramSocket(3000);
         }catch(Exception ex){ex.printStackTrace();}
 }
 public static void main(String [] args)
 {
  Chat chat=new Chat();
  chat.init();
 }
 public void init()
 {
  f.setSize(300,300);
  f.add(lst);

  Panel p=new Panel();
  p.setLayout(new BorderLayout());
  p.add("West",tfIP);
  TextField tfData=new TextField(20);
  p.add("East",tfData);
  f.add("South",p);
  f.setVisible(true);
  f.setResizable(false);//限制用户改变窗口的大小
  
  //增加关闭窗口的事件处理代码
  f.addWindowListener(new WindowAdapter()
{
 public void windowClosing(WindowEvent e)
 {
  ds.close();//程序退出时,关闭Socket,释放相关资源
  f.setVisible(false);
  f.dispose();
  System.exit(0);
 }
}); 
  //增加在消息文本框中按下回车键的事件处理代码
  tfData.addActionListener(new ActionListener()
{
       public void actionPerformed(ActionEvent e)
       {
  //取出文本框中的消息字符串,并将其转换成字节数组
    byte[] buf;
    buf = e.getActionCommand().getBytes();
 try
 {
  DatagramPacket dp= new DatagramPacket(buf,buf.length,
  InetAddress.getByName(tfIP.getText()),3000);
  ds.send(dp);
}catch(Exception ex){ex.printStackTrace();}
/*上面的Exception的引用变量名不能为e,而是改写成了ex,因为e已经在
actionPerformed方法中作为形式参数变量名被定义过了。*/
              ((TextField)e.getSource()).setText("");
       } 
});
 }
}
《Java就业培训教程》P380源码
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class Chat
{
 Frame f=new Frame("我的聊天室");
 TextField tfIP=new TextField(15);
 List lst=new List(6);
 DatagramSocket ds;。
 public Chat()
 {
         try
         {
             ds=new DatagramSocket(3000);
         }catch(Exception ex){ex.printStackTrace();}
   new Thread(new Runnable()
{
public void run()
    {
     byte buf[]=new byte[1024]; 
        DatagramPacket dp= new DatagramPacket(buf,1024);
        while(true)
        {
           try
           {
             ds.receive(dp);
                lst.add(new String(buf,0,dp.getLength())+
":from"+dp.getAddress().getHostAddress(),0);
           }catch(Exception e){e.printStackTrace();}                
         }
 }
}).start();
 }
 ……
}
《Java就业培训教程》P385源码
import java.net.*;
import java.io.*;
public class TcpServer
{
 public static void main(String [] args)
 {
  try
  {
  ServerSocket ss=new ServerSocket(8001);
  Socket s=ss.accept();
  InputStream ips=s.getInputStream();
  OutputStream ops=s.getOutputStream();
  ops.write("welcome to www.it315.org!".getBytes());
  byte [] buf = new byte[1024];
  int len = ips.read(buf);
  System.out.println(new String(buf,0,len));
  ips.close();
  ops.close();
  s.close();
  ss.close();
  }catch(Exception e){e.printStackTrace();}
 }
}
《Java就业培训教程》P388源码
import java.net.*;
import java.io.*;
class Servicer implements Runnable
{
 Socket s;
 public Servicer(Socket s)
 {
  this.s = s;
 }
 public void run()
 {
 try
 {
 InputStream ips=s.getInputStream();
 OutputStream ops=s.getOutputStream();
 
 BufferedReader br = new BufferedReader(new InputStreamReader(ips));
 DataOutputStream dos = new DataOutputStream(ops);
 while(true)
 {
  String strWord = br.readLine();
  //System.out.println(strWord +":" + strWord.length());
  if(strWord. equalsIgnoreCase("quit"))
   break;
  String strEcho = (new StringBuffer(strWord).reverse()).toString();
  //dos.writeBytes(strWord +"---->"+ strEcho +"/r/n");
  dos.writeBytes(strWord + "---->"+ strEcho +
 System.getProperty("line.separator"));   }
 br.close();
 //关闭包装类,会自动关闭包装类中所包装的底层类。所以不用调用ips.close()
 dos.close();
 s.close();
 }catch(Exception e){e.printStackTrace();}
 }
}
class TcpServer
{
 public static void main(String [] args)
 {
  try
  {
   ServerSocket ss=new ServerSocket(8001);
   while(true)
   {
    Socket s=ss.accept();
    new Thread(new Servicer(s)).start();
   }
   //ss.close();
  }catch(Exception e){e.printStackTrace();}
 }
}
《Java就业培训教程》P391源码
import java.net.*;
import java.io.*;
public class TcpClient
{
 public static void main(String [] args)
 {
 try
 {
  //Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001);
  if(args.length < 2)
  {
   System.out.println("Usage:java TcpClient ServerIP ServerPort");
   return;
  }
  Socket s=new Socket(
  InetAddress.getByName(args[0]),Integer.parseInt(args[1]));
  InputStream ips=s.getInputStream();
  OutputStream ops=s.getOutputStream();
  
  BufferedReader brKey =
  new BufferedReader(new InputStreamReader(System.in));
  DataOutputStream dos = new DataOutputStream(ops);
  BufferedReader brNet = new BufferedReader(new InputStreamReader(ips));

  while(true)
  {
   String strWord = brKey.readLine();
   dos.writeBytes(strWord + System.getProperty("line.separator"));
   if(strWord.equalsIgnoreCase("quit"))
    break;
   else
    System.out.println(brNet.readLine());
  }
  dos.close();
  brNet.close();
  brKey.close();
  s.close();
 }catch(Exception e){e.printStackTrace();}
 }
}

本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地讲解了Java开发环境的搭建、反编译工具的使用、JDK文档资料的查阅,Java程序的编译、运行过程。在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。读者从本书中不仅可以学习到Java本身方面的知识,还能学到了许多编程思想和实际操作手法,仿佛老手就在你面前进行现场演示一样。本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。 本书不仅讲概念,讲怎么做,还告诉读者为什么;不仅讲操作技能,还贯穿一些系统的理论,这样读者才不至于不明不白,或是似乎明白,但不知道具体该怎么干。本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,图文并茂,实用性强,适合于广大有经验的开发人员来迅速转换到Java语言,对广大初学计算机编程语言的爱好者来说,这本书就是非常好的切入点。本书基本理论知识完备,又紧密联系实际开发,也非常适合作为大专院校师生的教学与学习用书,将给广大师生带来一种革命性的教学方式与学习思路,令人耳目一新。 这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常轻松就精通Java编程,并期望学完便能参加实际的开发工作,本书就是你非常好的一个选择。
内容简介 本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地讲解了Java开发环境的搭建、反编译工具的使用、JDK文档资料的查阅,Java程序的编译、运行过程。在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。读者从本书中不仅可以学习到Java本身方面的知识,还能学到了许多编程思想和实际操作手法,仿佛老手就在你面前进行现场演示一样。本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。 本书不仅讲概念,讲怎么做,还告诉读者为什么;不仅讲操作技能,还贯穿一些系统的理论,这样读者才不至于不明不白,或是似乎明白,但不知道具体该怎么干。本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,图文并茂,实用性强,适合于广大有经验的开发人员来迅速转换到Java语言,对广大初学计算机编程语言的爱好者来说,这本书就是非常好的切入点。本书基本理论知识完备,又紧密联系实际开发,也非常适合作为大专院校师生的教学与学习用书,将给广大师生带来一种革命性的教学方式与学习思路,令人耳目一新。 这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常轻松就精通Java编程,并期望学完便能参加实际的开发工作,本书就是你非常好的一个选择。 目录: 第1章 Java开发前奏 1.1 Java虚拟机及Java的跨平台原理 1.2 Java开发环境的搭建 1.3 体验Java编程的过程 1.4 classpath的设置 1.5 有效利用Java的文档帮助 1.6 JVM(虚拟机)的运行过程 1.7 垃圾回收器 1.8 反编译工具的介绍 第2章 Java编程基础 2.1 Java基本语法格式 2.2 变量及变量的作用域 2.3 函数与函数的重载 2.4 Java中的运算符 2.5 程序的流程控制 2.6 数组 第3章 面向对象(上) 3.1 面向对象的概念 3.2 类与对象 3.3 构造函数 3.4 this引用句柄 3.5 与垃圾回收有关的知识 3.6 函数的参数传递 3.7 Static关键字 3.8 内部类 3.9 使用Java的文档注释 第4章 面向对象(下) 4.1 类的继承 4.2 抽象类与接口 4.3 对象的多态性 4.4 异常 4.5 包 4.6 访问控制 4.7 使用jar文件 第5章 多线程 5.1 如何创建与理解线程 5.2 多线程的同步 5.3 线程间的通信 5.4 线程生命的控制 第6章 Java API 6.1 理解API的概念 6.2 工具软件的介绍与使用 6.3 String类和StringBuffer类 6.4 基本数据类型的对象包装类 6.5 集合类 6.6 Hashtable与Properties类 6.7 System类与Runtime类 6.8 Date与Calendar,DateFormat类 6.9 Math与Random类 6.10 学习API的方法 第7章 IO/输入输出 7.1 File类 7.2 RandomAccessFile类 7.3 节点流 7.4 过滤流与包装类 7.5 IO中的高级应用 第8章 图形用户界面GUI(一) 8.1 初识AWT 8.2 AWT线程 8.3 AWT事件处理 8.4 GUI组件上的图形操作 第9章 图形用户界面GUI(二) 9.1 常用AWT组件 9.2 布局管理器 9.3 Swing 第10章 Applet 10.1 浏览器怎样显示网页 10.2 浏览器处理网页脚本代码的过程 10.3 浏览器怎么处理Applet 10.4 Applet类及其方法 10.5 一个显示动画的Applet的程序 10.6 关于Java的一些细节 10.7 验证Applet对象在客户端如何存在 第11章 网络编程 11.1 网络编程的基础知识 11.2 Java编写UDP网络程序 11.3 Java编写TCP网络程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值