职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1979|回复: 0

张孝祥 -- 《Java就业培训教程》书中原码 11章

[复制链接]
weisheng 发表于 2006-11-14 07:25 | 显示全部楼层 |阅读模式
《Java就业培训教程》P374的Java原代码
发送程序: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的Java原代码
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的Java原代码
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的Java原代码
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的Java原代码
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的Java原代码
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();}
        }
}
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-12 01:52 , Processed in 0.142325 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表