《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();}
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地讲解了Java开发环境的搭建、反编译工具的使用、JDK文档资料的查阅,Java程序的编译、运行过程。在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。读者从本书中不仅可以学习到Java本身方面的知识,还能学到了许多编程思想和实际操作手法,仿佛老手就在你面前进行现场演示一样。本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。 本书不仅讲概念,讲怎么做,还告诉读者为什么;不仅讲操作技能,还贯穿一些系统的理论,这样读者才不至于不明不白,或是似乎明白,但不知道具体该怎么干。本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,图文并茂,实用性强,适合于广大有经验的开发人员来迅速转换到Java语言,对广大初学计算机编程语言的爱好者来说,这本书就是非常好的切入点。本书基本理论知识完备,又紧密联系实际开发,也非常适合作为大专院校师生的教学与学习用书,将给广大师生带来一种革命性的教学方式与学习思路,令人耳目一新。 这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常轻松就精通Java编程,并期望学完便能参加实际的开发工作,本书就是你非常好的一个选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值