<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:ppp="http://blog.sohu.com/rss/module/ppp/"
	>

	<channel>
		<title>袁小六</title>
		<link>http://eyinsheng.blog.sohu.com/</link>
		<description><![CDATA[中国人！自强不息！]]></description>
		<pubDate>Thu, 8 Nov 2007 16:33:12 +0800</pubDate>
		<generator>搜狐博客</generator>
		<ppp:ebi>f2bed68792</ppp:ebi>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>用java写的一个简单的聊天工具</title>
			<link>http://eyinsheng.blog.sohu.com/69818740.html</link>
			<comments>http://eyinsheng.blog.sohu.com/69818740.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Thu, 8 Nov 2007 16:33:12 +0800</pubDate>
			<category>程序开发语言</category>
			<guid>http://eyinsheng.blog.sohu.com/69818740.html</guid>
			<description><![CDATA[客户端<br />import java.awt.*;<br />import javax.swing.*;<br />import java.awt.event.*;<br />import java.net.*;<br />import java.io.*;<br />import java.util.*;<br />import java.text.*; 
<p>public class Client extends JFrame{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JButton bt_create;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JTextArea jta_receive;<br />&nbsp;&nbsp;&nbsp;&nbsp;private DataInputStream in;<br />&nbsp;&nbsp;&nbsp;&nbsp;private DataOutputStream out;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JTextField jtf_send=new JTextField(35);;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JScrollPane jsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private Socket client;<br />&nbsp;&nbsp;&nbsp;&nbsp;private SimpleDateFormat df=new SimpleDateFormat(&quot;HH:mm:ss&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public Client() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//receive <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class Receive extends Thread{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void run(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(true){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jta_receive.append(in.readUTF()+&quot;\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//north<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class North extends JPanel{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton bt_send=new JButton(&quot;发送&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton bt_clear=new JButton(&quot;清空&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public North(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(new JLabel(&quot;请输入发送信息&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(jtf_send);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_send);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_clear);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_send.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.writeUTF(jtf_send.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.setText(null);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清空<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_clear.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive.setText(&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动服务器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive=new JTextArea();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive.setEditable(false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsp=new JScrollPane(jta_receive);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_create=new JButton(&quot;连接服务器&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_create.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//InetAddress address=InetAddress.getLocalHost();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client=new Socket(/*address.getHostAddress()这里写服务器端IP*/&quot;192.168.3.21&quot;,5555);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in=new DataInputStream(client.getInputStream());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out=new DataOutputStream(client.getOutputStream());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Receive().start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_create.setVisible(false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//监听键盘 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.addKeyListener(new KeyAdapter(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void keyPressed(KeyEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e.getKeyCode()==KeyEvent.VK_ENTER){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.writeUTF(df.format(new Date())+&quot; 老婆: \n&nbsp;&nbsp;&nbsp;&nbsp;&quot;+jtf_send.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.setText(null);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(new North(),BorderLayout.NORTH);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(jsp,BorderLayout.CENTER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_create,BorderLayout.SOUTH);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTitle(&quot;客户端&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLocation(200,200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSize(630,400);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setVisible(true);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public static void main (String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Client();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><br />服务器端<br />/**<br />* @(#)Server.java<br />*<br />*<br />* @author <br />* @version 1.00 2007/11/7<br />*/</p>
<p>import java.awt.*;<br />import javax.swing.*;<br />import java.awt.event.*;<br />import java.net.*;<br />import java.io.*;<br />import java.util.*;<br />import java.text.*;</p>
<p><br />public class Server extends JFrame{<br />&nbsp;&nbsp;&nbsp;&nbsp;private JButton bt_receive;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JTextArea jta_receive;<br />&nbsp;&nbsp;&nbsp;&nbsp;private DataInputStream in;<br />&nbsp;&nbsp;&nbsp;&nbsp;private DataOutputStream out;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JTextField jtf_send=new JTextField(35);;<br />&nbsp;&nbsp;&nbsp;&nbsp;private JScrollPane jsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private ServerSocket server;<br />&nbsp;&nbsp;&nbsp;&nbsp;private Socket received;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private SimpleDateFormat df=new SimpleDateFormat(&quot;HH:mm:ss&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public Server() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//socket<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server=new ServerSocket(5555);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//receive <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class Receive extends Thread{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void run(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jta_receive.append(in.readUTF()+&quot;\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jta_receive.append(in.readUTF()+&quot;\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//north<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class North extends JPanel{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton bt_send=new JButton(&quot;发送&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JButton bt_clear=new JButton(&quot;清空&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public North(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(new JLabel(&quot;请输入发送信息&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(jtf_send);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_send);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_clear);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//send<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_send.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(received==null){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(null,&quot;请先启动服务器&quot;,&quot;出错啦&quot;,JOptionPane.ERROR_MESSAGE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.writeUTF(df.format(new Date())+&quot;&nbsp;&nbsp;老公:&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.writeUTF(jtf_send.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.setText(null);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清空<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_clear.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive.setText(&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动服务器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive=new JTextArea();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsp=new JScrollPane(jta_receive);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jta_receive.setEditable(false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_receive=new JButton(&quot;启动服务器&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_receive.addActionListener(new ActionListener(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(ActionEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;received=server.accept();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in=new DataInputStream(received.getInputStream());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out=new DataOutputStream(received.getOutputStream());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Receive().start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bt_receive.setVisible(false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//监听键盘 鼠标在何哪就谁监听<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.addKeyListener(new KeyAdapter(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void keyPressed(KeyEvent e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(e.getKeyCode()==KeyEvent.VK_ENTER){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.writeUTF(jtf_send.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jtf_send.setText(null);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(IOException ioe){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(new North(),BorderLayout.NORTH);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(jsp,BorderLayout.CENTER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(bt_receive,BorderLayout.SOUTH);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTitle(&quot;服务器&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLocation(200,200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSize(630,400);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setVisible(true);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public static void main (String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Server();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><font color="#ff0000">基本没啥功能就一个聊天功能<br />还有个问题想请教<br />如何使我的JScrollBar随着我的文字走~~~?</font></p>]]></description>
		</item>
		    
		
		<item>
			<title>韩信点兵 与 中国剩余定理  详解</title>
			<link>http://eyinsheng.blog.sohu.com/60238321.html</link>
			<comments>http://eyinsheng.blog.sohu.com/60238321.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Sat, 18 Aug 2007 08:30:44 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/60238321.html</guid>
			<description><![CDATA[<p><img style="DISPLAY: block; MARGIN: 0px auto 10px; TEXT-ALIGN: center" height="160" alt="" src="http://117.photo.pp.sohu.com/images/blog/2007/8/18/8/24/1151044e25b.jpg" width="206" border="0" /></p>
<p>韩信点兵 </p>
<p>汉高祖刘邦曾问大将韩信：&ldquo;你看我能带多少兵？&rdquo;韩信斜了刘邦一眼说：&ldquo;你顶多能带十万兵吧！&rdquo;汉高祖心中有三分不悦，心想：你竟敢小看我！&ldquo;那你呢？&rdquo;韩信傲气十足地说：&ldquo;我呀，当然是多多益善啰！&rdquo;刘邦心中又添了三分不高兴，勉强说：&ldquo;将军如此大才，我很佩服。现在，我有一个小小的问题向将军请教，凭将军的大才，答起来一定不费吹灰之力的。&rdquo;韩信满不在乎地说：&ldquo;可以可以。&rdquo;刘邦狡黠地一笑，传令叫来一小队士兵隔墙站队，刘邦发令：&ldquo;每三人站成一排。&rdquo;队站好后，小队长进来报告：&ldquo;最后一排只有二人。&rdquo;&ldquo;刘邦又传令：&ldquo;每五人站成一排。&rdquo;小队长报告：&ldquo;最后一排只有三人。&rdquo;刘邦再传令：&ldquo;每七人站成一排。&rdquo;小队长报告：&ldquo;最后一排只有二人。&rdquo;刘邦转脸问韩信：&ldquo;敢问将军，这队士兵有多少人？&rdquo;韩信脱口而出：&ldquo;二十三人。&rdquo;刘邦大惊，心中的不快已增至十分，心想：&ldquo;此人本事太大，我得想法找个岔子把他杀掉，免生后患。&rdquo;一面则佯装笑脸夸了几句，并问：&ldquo;你是怎样算的？&rdquo;韩信说：&ldquo;臣幼得黄石公传授《孙子算经》，这孙子乃鬼谷子的弟子，算经中载有此题之算法，口诀是： </p>
<p>三人同行七十稀， </p>
<p>五树梅花开一枝， </p>
<p>七子团圆正月半， </p>
<p>除百零五便得知。&rdquo; </p>
<p>刘邦出的这道题，可用现代语言这样表述： </p>
<p>&ldquo;一个正整数，被3除时余2，被5除时余3，被7除时余2，如果这数不超过100，求这个数。&rdquo; </p>
<p>《孙子算经》中给出这类问题的解法：&ldquo;三三数之剩二，则置一百四十；五五数之剩三，置六十三；七七数之剩二，置三十；并之得二百三十三，以二百一十减之，即得。凡三三数之剩一，则置七十；五五数之剩一，则置二十一；七七数之剩一，则置十五，一百六以上，以一百五减之，即得。&rdquo;用现代语言说明这个解法就是： </p>
<p>首先找出能被5与7整除而被3除余1的数70，被3与7整除而被5除余1的数21，被3与5整除而被7除余1的数15。 </p>
<p>所求数被3除余2，则取数70&times;2＝140，140是被5与7整除而被3除余2的数。 </p>
<p>所求数被5除余3，则取数21&times;3＝63，63是被3与7整除而被5除余3的数。 </p>
<p>所求数被7除余2，则取数15&times;2=30，30是被3与5整除而被7除余2的数。 </p>
<p>又，140＋63＋30=233，由于63与30都能被3整除，故233与140这两数被3除的余数相同，都是余2，同理233与63这两数被5除的余数相同，都是3，233与30被7除的余数相同，都是2。所以233是满足题目要求的一个数。 </p>
<p>而3、5、7的最小公倍数是105，故233加减105的整数倍后被3、5、7除的余数不会变，从而所得的数都能满足题目的要求。由于所求仅是一小队士兵的人数，这意味着人数不超过100，所以用233减去105的2倍得23即是所求。 </p>
<p>这个算法在我国有许多名称，如&ldquo;韩信点兵&rdquo;，&ldquo;鬼谷算&rdquo;，&ldquo;隔墙算&rdquo;，&ldquo;剪管术&rdquo;，&ldquo;神奇妙算&rdquo;等等，题目与解法都载于我国古代重要的数学著作《孙子算经》中。一般认为这是三国或晋时的著作，比刘邦生活的年代要晚近五百年，算法口诀诗则载于明朝程大位的《算法统宗》，诗中数字隐含的口诀前面已经解释了。宋朝的数学家秦九韶把这个问题推广，并把解法称之为&ldquo;大衍求一术&rdquo;，这个解法传到西方后，被称为&ldquo;孙子定理&rdquo;或&ldquo;中国剩余定理&rdquo;。而韩信，则终于被刘邦的妻子吕后诛杀于未央宫。 </p>
<p>请你试一试，用刚才的方法解下面这题： </p>
<p>一个数在200与400之间，它被3除余2，被7除余3，被8除余5，求该数。 </p>
<p>（解：112&times;2＋120&times;3＋105&times;5＋168k，取k＝-5得该数为269。） <br /></p>
<p>呵呵，这个算法，也就是中国剩余定理</p>
<p>&nbsp;从《孙子算经》到秦九韶《数书九章》对一次同余式问题的研究成果，在１９世纪中期开始受到西方数学界的重视。１８５２年，英国传教士伟烈亚力向欧洲介绍了《孙子算经》的&ldquo;物不知数&rdquo;题和秦九韶的&ldquo;大衍求一术&rdquo;；１８７６年，德国人马蒂生指出，中国的这一解法与西方１９世纪高斯《算术探究》中关于一次同余式组的解法完全一致。从此，中国古代数学的这一创造逐渐受到世界学者的瞩目，并在西方数学史著作中正式被称为&ldquo;中国剩余定理&rdquo;。</p>]]></description>
		</item>
		    
		
		<item>
			<title>一个java技术人员这么说</title>
			<link>http://eyinsheng.blog.sohu.com/59237774.html</link>
			<comments>http://eyinsheng.blog.sohu.com/59237774.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Fri, 10 Aug 2007 20:35:44 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/59237774.html</guid>
			<description><![CDATA[我现在是自己做，但我此前有多年在从事软件开发工作，当回过头来想一想自己，觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话，希望你们能从我们的体会中，多少受点启发(也许我说的不好，你不赞同但看在我真心的份上别扔砖头啊)。<br />&nbsp;&nbsp; &nbsp;&nbsp;一。 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇，你千万更不要认为哪些从事 市场开发，跑腿的人，没有前途。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;不知道你是不是知道，咱们中国有相当大的一部分软件公司，他们的软件开发团队都小的可怜，甚至只有1-3个人，连一个项目小组都算不上，而这样的团队却要承担一个软件公司所有的软件开发任务，在软件上线和开发的关键阶段需要团队的成员没日没夜的加班，还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑，有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友，进行封闭开发，你平时除了编码之外就是吃饭和睡觉（有钱的公司甚至请个保姆为你做饭，以让你节省出更多的时间来投入到工作中，让你一直在那种累了就休息，不累就立即工作的状态）<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;更可怕的是，会让你接触的人际关系非常单一，除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人，你的朋友圈子小且单一，甚至破坏你原有的爱情（想象一下，你在外地做现场开发2个月以上，却从没跟女友见过一面的话，你的女友是不是会对你呲牙裂嘴）。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;也许你拿到了所谓的白领的工资，但你却从此失去享受生活的自由，如果你想做技术人员尤其是开发人员，我想你很快就会理解，你多么想在一个地方长期待一段时间，认识一些朋友，多一些生活时间的愿望。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;比之于我们的生活和人际关系及工作，那些从事售前和市场开发的朋友，却有比我们多的多的工作之外的时间，甚至他们工作的时间有的时候是和生活的时间是可以兼顾的，他们可以通过市场开发，认识各个行业的人士，可以认识各种各样的朋友，他们比我们坦率说更有发财和发展的机会，只要他们跟我们一样勤奋。（有一种勤奋的普通人，如果给他换个地方，他马上会成为一个勤奋且出众的人。）<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;二。在学习技术的时候千万不要认为如果做到技术最强，就可以成为100%受尊重的人。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;有一次一个人在面试项目经理的时候说了这么一段话：我只用最听话的人，按照我的要求做只要是听话就要，如果不听话不管他技术再好也不要。随后这个人得到了试用机会，如果没意外的话，他一定会是下一个项目经理的继任者。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;朋友们你知道吗？不管你技术有多强，你也不可能自由的腾出时间象别人那样研究一下LINUX源码，甚至写一个LINUX样的杰作来表现你的才能。你需要做的就是按照要求写代码，写代码的含义就是都规定好，你按照规定写，你很快就会发现你昨天写的代码，跟今天写的代码有很多类似，等你写过一段时间的代码，你将领略：复制，拷贝，粘贴那样的技术对你来说是何等重要。（如果你没有做过1年以上的真正意义上的开发不要反驳我）。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;如果你幸运的能够听到市场人员的谈话，或是领导们的谈话，你会隐约觉得他们都在把技术人员当作编码的机器来看，你的价值并没有你想象的那么重要。而在你所在的团队内部，你可能正在为一个技术问题的讨论再跟同事搞内耗，因为他不服你，你也不服他，你们都认为自己的对，其实你们两个都对，而争论的目的就是为了在关键场合证明一下自己比对方技术好，比对方强。（在一个项目开发中，没有人愿意长期听别人的，总想换个位置领导别人。）<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;三。你更不要认为，如果我技术够好，我就自己创业，自己有创业的资本，因为自己是搞技术的。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;如果你那样认为，真的是大错特错了，你可以做个调查在非技术人群中，没有几个人知道C#与JAVA的，更谈不上来欣赏你的技术是好还是不好。一句话，技术仅仅是一个工具，善于运用这个工具为别人干活的人，却往往不太擅长用这个工具来为自己创业，因为这是两个概念，训练的技能也是完全不同的。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;创业最开始的时候，你的人际关系，你处理人际关系的能力，你对社会潜规则的认识，还有你明白不明白别人的心，你会不会说让人喜欢的话，还有你对自己所提供的服务的策划和推销等等，也许有一万，一百万个值得我们重视的问题，但你会发现技术却很少有可能包含在这一万或一百万之内，如果你创业到了一个快成功的阶段，你会这样告诉自己：我干吗要亲自做技术，我聘一个人不就行了，这时候你才真正会理解技术的作用，和你以前做技术人员的作用。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;[小结]<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;基于上面的讨论，我奉劝那些学习技术的朋友，千万不要拿科举考试样的心态去学习技术,对技术的学习几近的痴迷，想掌握所有所有的技术，以让自己成为技术领域的权威和专家，以在必要的时候或是心里不畅快的时候到网上对着菜鸟说自己是前辈。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;技术仅仅是一个工具，是你在人生一个阶段生存的工具，你可以一辈子喜欢他，但最好不要一辈子靠它生存。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;掌握技术的唯一目的就是拿它找工作（如果你不想把技术当作你第二生命的话），就是干活。所以你在学习的时候千万不要去做那些所谓的技术习题或是研究那些帽泡算法，最大数算法了，什么叫干活？<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;就是做一个东西让别人用，别人用了，可以提高他们的工作效率，想象吧，你做1万道技术习题有什么用？只会让人觉得酸腐，还是在学习的时候，多培养些自己务实的态度吧，比如研究一下当地市场目前有哪些软件公司用人，自己离他们的要求到底有多远，自己具体应该怎么做才可以达到他们的要求。等你分析完这些，你就会发现，找工作成功，技术的贡献率其实并没有你原来想象的那么高。<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;不管你是学习技术为了找工作还是创业，你都要对技术本身有个清醒的认识，在中国不会出现BILL GATES，因为，中国目前还不是十分的尊重技术人才，还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。（如果你不理解，一种可能是你目前仅仅从事过技术工作，你的朋友圈子里技术类的朋友占了大多数，一种可能是你还没有工作，但喜欢读比尔。盖茨的传记）。]]></description>
		</item>
		    
		
		<item>
			<title>java笑话(可笑死我了)</title>
			<link>http://eyinsheng.blog.sohu.com/59041227.html</link>
			<comments>http://eyinsheng.blog.sohu.com/59041227.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Tue, 30 Oct 2007 08:31:20 +0800</pubDate>
			<category>程序开发语言</category>
			<guid>http://eyinsheng.blog.sohu.com/59041227.html</guid>
			<description><![CDATA[<font size="3">面试官：熟悉哪种语言<br />应聘者：Java。<br />面试官：知道什么叫类么<br />应聘者：我这人实在，工作努力，不知道什么叫累<br />面试官：知道什么是包?<br />应聘者：我这人实在 &nbsp;&nbsp;平常不带包 也不用公司准备了<br />面试官：知道什么是接口吗?<br />应聘者：我这个人工作认真。从来不找借口偷懒<br />M：知道什么是继承么<br />Y：我是孤儿没什么可以继承的<br />M:知道什么叫对象么？<br />M:知道，不过我工作努力，上进心强，暂时还没有打算找对象。<br />M：知道多态么？<br />Y：知道，我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为！<br />请问这和Java有什么关系？？<br />面试官：用过 apache 的东西吗<br />应聘者：我修过车子<br />M：tomcat了解么<br />Y：小时看过。。现在也喜欢看<br />面试官：了解webwork吗<br />应聘者：不了解。我一直专注于本职工作，对外部的没有时间涉猎。<br />M:了解jakarta的哪些项目？<br />Y:不了解，我只去那儿旅游过。<br />M:用过bea的weblogic吗？<br />Y:没，只喝过蜂蜜。<br />M:了解SUN的创始人吗？<br />Y:不知道，不过我爆喜欢队中的纳什<br />M：用过spring么？<br />Y：没用过，发过。<br />M：知道Hibernate吗<br />Y：知道，动物冬天经常Hibernate,但我从来不冬眠<br />M：知道css吗?<br />Y：cs出加强版了？<br />M：OCR用作过没？<br />Y：我从不玩魔兽<br />M：W3C标准常用什么地方<br />Y：Lost Tample<br />M：知道REST么？<br />Y：我很勤奋，只知道干活，不知道休息。<br /></font>]]></description>
		</item>
		    
		
		<item>
			<title>龙芯转攻防火墙</title>
			<link>http://eyinsheng.blog.sohu.com/59021805.html</link>
			<comments>http://eyinsheng.blog.sohu.com/59021805.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Thu, 9 Aug 2007 08:24:39 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/59021805.html</guid>
			<description><![CDATA[<h5>
</h5><h5>
<p>昨天下午，中国拥有自主知识产权的芯片处理器有了新的进展，龙芯总设计师胡伟武与曙光公司相关负责人共同宣布，首款基于龙芯处理器的防火墙产品已推出，从而进一步破除了龙芯&ldquo;好看不可用&rdquo;的&ldquo;花瓶炒作论&rdquo;。 <br /><br /><strong>龙芯进军网络安全产品 </strong></p>
<p>　　该日，曙光信息安全事业部总经理邓洪升宣布，曙光已采用龙芯2E处理器推出了一款型号为TLFW&mdash;100L的防火墙。该产品由曙光自主开发主板，结合曙光自主的防火墙软件，形成了软硬件一体化的防火墙安全系统。 <br /><br />　　邓洪升表示，信息安全关系着企业、民生、经济、军事、国家等各个方面的安全，有人将信息安全比喻成关系到&ldquo;国家安全的长城&rdquo;，如果我国的信息化建立在国外芯片技术之上，那国家安全将无从谈起。而龙芯是我国自主拥有自主知识产权，基于龙芯芯片的该防火墙产品也实现了从硬件到软件、从系统到芯片的完全自主知识产权。 <br /><br />　　据悉，这是龙芯芯片首次进军网络安全产品。 <br /><br /><strong>确保安全和低成本</strong> <br /><br />　　由于对英特尔、AMD的电脑CPU形成了潜在挑战，龙芯芯片从诞生至今的每一步都备受关注。 <br /><br />　　此前，龙芯芯片的应用被认为主要在于PC及笔记本电脑上，对于为何推出基于龙芯芯片的网络安全产品，曙光公司营销总监王成江表示，CPU是信息化的核心部件，一颗芯片由几百万个甚至几亿个晶体管构成，可以说只有设计者才知道每个晶体管的功能和用途，如果设计者在某些晶体管上&ldquo;开了后门&rdquo;，谁也无从知晓，这样就造成了安全隐患，基于国产自主知识产品的龙芯芯片的网络安全产品显然能避免这种严重的安全漏洞问题。 <br /><br />　　王成江进一步指出，中国政府采购中对安全产品有特殊要求，一般都要求采购&ldquo;自主可控的国产安全产品&rdquo;，但目前市场上的防火墙产品都缺乏完全的&ldquo;自主可控&rdquo;。防火墙产品是软硬件一体化的产品，硬件平台一般都采用国外核心芯片，软件OEM国外产品也不鲜见，在安全的背后隐藏着很多不安全的隐患。只有用龙芯这样完全自主的处理器，才能确保安全。 <br /><br /><strong>性能远高于常用低端的英特尔芯片防火墙平台</strong> <br /><br />　　龙芯总设计师胡伟武也到场，他表示，龙芯不会只是用于PC，而是期待整个产业环境的建立，希望有成百上千的企业在龙芯产业链里面，现在大家显然已经看到比较好的前景。 <br /><br />　　对于龙芯芯片目前性能还无法与英特尔、AMD的主流芯片等相比，曙光信息安全事业部总经理邓洪升表示，基于龙芯的曙光防火墙工作在网络层，对CPU性能依赖不大，对系统的网络吞吐率、稳定性要求较高，所以足以适应市场需求。 <br /><br />　　邓洪升同时表示，基于龙芯的曙光防火墙性能，远高于目前低端常用的英特尔NP 425芯片防火墙平台，与英特尔 P3 1G配置的x86平台性能也已经相当接近。 <br /><br />　　&ldquo;基于龙芯的防火墙在电信机房测试2个多月，稳定性好&rdquo;，邓如此有信心地表示。</p></h5>]]></description>
		</item>
		    
		
		<item>
			<title>杨辉三角的java解法</title>
			<link>http://eyinsheng.blog.sohu.com/58948641.html</link>
			<comments>http://eyinsheng.blog.sohu.com/58948641.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Wed, 8 Aug 2007 16:41:24 +0800</pubDate>
			<category>程序开发语言</category>
			<guid>http://eyinsheng.blog.sohu.com/58948641.html</guid>
			<description><![CDATA[<p>public class Yanghuisanjiao {<br />&nbsp; public static void main (String[] args) {<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; int[][] a=new int[10][10];<br />&nbsp;&nbsp;<br />&nbsp;&nbsp; &nbsp;for(int i=0;i&lt;10;i++) <br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;a[i][0]=a[i][i]=1;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; for(int i=2;i&lt;10;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=1;j&lt;=i;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; a[i][j]=a[i-1][j-1]+a[i-1][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; &nbsp;for(int i=0;i&lt;10;i++){<br />&nbsp; &nbsp;&nbsp;&nbsp; for(int j=0;j&lt;=i;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;System.out.format(&quot;%5d&quot;,a[i][j]);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;System.out.println();&nbsp;<br />&nbsp;&nbsp;&nbsp;}</p>
<p>}</p>
<p>}</p>]]></description>
		</item>
		    
		
		<item>
			<title>CSDN名字的含义。。。</title>
			<link>http://eyinsheng.blog.sohu.com/58815049.html</link>
			<comments>http://eyinsheng.blog.sohu.com/58815049.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Tue, 7 Aug 2007 17:15:50 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/58815049.html</guid>
			<description><![CDATA[<p><font size="2">今天在网上随便逛着，在一个论坛就有人问，CSDN是什么意思，下面的答案是千奇百怪，无所不有啊。。。</font></p>
<p><font size="2">最经典一哥们，言简意赅，别的没说四个大字：&quot;床上等你&quot;。。。</font></p>
<p><font size="2">我真是哭笑不得，你说这想象力，我真是佩服的五体投地。</font></p>
<p><font size="2">在这替CSDN澄清一下，CSDN是&quot;中国软件开发联盟&quot;（也有叫&quot;中国软件开发网&quot;的，不过我对联盟这个词情有独钟），是&quot;chinese software develop net&quot;的缩写。。。</font></p>
<p><font size="2">好了，我不希望在听到&quot;床上等你&quot;这么经典的话了。。。</font></p>
<p><font size="2"></font>&nbsp;</p>]]></description>
		</item>
		    
		
		<item>
			<title>诺顿误杀之迷，实为发现微软窃取我国机密后门（转）</title>
			<link>http://eyinsheng.blog.sohu.com/58442555.html</link>
			<comments>http://eyinsheng.blog.sohu.com/58442555.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Sun, 5 Aug 2007 09:27:57 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/58442555.html</guid>
			<description><![CDATA[&nbsp;针对前段时间诺顿杀毒软件&ldquo;误杀&rdquo;微软WIN XP操作系统事件，多认为诺顿犯了一个&ldquo;重大的低级错误&rdquo;，此帖却借此揭开惊天秘密： 赛门铁克是无辜的，微软在系统中设置后门窃取我国家机密！<br /><br />　&nbsp; 一家之言，证据欠缺，聊可一看。<br /><br />　　诺顿杀毒软件&ldquo;误杀&rdquo;微软WIN XP操作系统正炒得沸沸扬扬，国内安全软件厂商纷纷指责诺顿犯了一个&ldquo;重大的低级错误&rdquo;，连诺顿自己也不得不站出来承认是&ldquo;误报&rdquo;。不过对于诺顿是否是&ldquo;误报&rdquo;，我看却有一些疑点。 <br /><br />　　诺顿只对简体中文版XP系统&ldquo;误报&rdquo;，并且是安装了MS06-070补丁的WIN XP，而对国外用户几乎没有影响。这不由得让人怀疑，安装了MS06- 070补丁的简体中文版XP，是否藏有特殊的代码？受影响的文件netapi32.dll(5.1.2600.2976版本)和lsasrv.dll (5.1.2600.2976版本)究竟是什么？ 升级前为什么不会&ldquo;误报&rdquo;？ <br /><br />　　安全软件会在操作者使用过程中，对应用软件的行为进行分析，比如软件使用了哪些端口，向哪个特定的地址发送了信息，这些操作安全软件有责任提醒给使用者。不过一般的情况下，对于成熟的商业软件，安全软件会选择忽略提醒，因为从道德和法律层面上，商业公司是不会将获取的用户信息泄露出去的。 <br /><br />　　诺顿犯的这个&ldquo;重大的低级错误&rdquo;，其实就是证实了微软的简体中文版XP系统存在&ldquo;木马行为&rdquo;。诺顿全球安全响应中心负责人Vincent Weafer的解释是：&ldquo;此事件中，我们的工具主要是查DNA，而不是看有没有数字签名和版权。&rdquo; <br /><br />　　此前，一位美国科学家称微软公司在它的 Windows软件中加上秘密&ldquo;后门&rdquo;，以便美国国家安全局（NSA) 可以随意进入用户的操作系统并偷看用户的敏感电脑资料。微软也承认Vista的研发得到了上述秘密组织的大力帮助。NSA表示，它帮助微软开发了新版操作系统的安全保护功能，比如防护蠕虫、木马及其它的恶意计算机攻击等&mdash;&mdash;微软安全了，美国才安全。 <br /><br />　　但问题或许还不仅仅是对信息安全的担心这么简单。 <br /><br />　　2006年2月，中美首轮贸易磋商在北京举行，以反盗版、假冒为核心的知识产权保护问题再次成为中美间贸易谈判的焦点，美国贸易代表办公室摆出强硬姿态，声称要把中国告上WTO，并要求美国在华企业收集中国侵权知识产权的证据。 <br /><br />　　2007年4月，美国向世贸组织递交了争端解决申请书。美国商务部助理部长透露，美国政府起诉中国政府，获得了美国企业的支持，他例举了三个企业的名字：微软、美国联合汽车工业公司、辉瑞制药有限公司（伟哥）。 <br /><br />2007年5月，诺顿杀毒软件&ldquo;误报&rdquo;微软WIN XP操作系统存在木马行为。 <br /><br />　　而国内的安全软件厂商此时却不合时宜的站出来，为了商业利益大打口水仗，将矛头对准诺顿。其实，对于中国用户来说，更希望国内的安全软件厂商告诉用户，微软的简体中文版XP系统是否真正安全，那个升级补丁里，到底藏了什么？ <br /><br />　　2007年5月18日由于诺顿杀毒软件&ldquo;误杀&rdquo;Windows系统文件，引发大规模电脑瘫痪&hellip;，这几天大家都看到媒体和各杀毒厂商一个个抓住这个机会拼命整赛门铁克，都在谈索赔问题。 <br /><br />　　从种种迹象来看，也许赛门铁克并没有出错，那两个文件极有可能是美国政府下令微软在简体版里植入的后门来监控中国网络信息的，赛门铁克做为世界第一大和最老资格的杀毒厂商，手中掌握的病毒库是其他杀毒厂商无法比的，他的技术实力也是非常雄厚的。这次所谓的误杀门事件并不是由赛门铁克的杀毒引擎所杀，而是由 18号更新的病毒库导致的。<br /><br />　　一般赛门铁克内部检测定义一个病毒除特征外还要有三道程序机制，除非技术人员反复确认这两个文件里有木马或后门特征是不会把他列为威胁的。 <br /><br />　　Symantec在杀系统文件时显示的病毒类型为：Backdoor , 后门类型病毒，就是说赛门铁克在这两个文件里发现了后门类型病毒的特征。 <br /><br />　　为什么赛门铁克其他系统文件不杀?就杀了那两个关键性的核心文件?一杀系统就完了，无法启动?唯一解释只有基于启动时加载内存的系统底层核心文件才这样。 <br /><br />　　诺顿是微软最高级的安全方面核心合作厂商，因此它的杀毒软件在某些方面工作比较特殊。比如在杀毒软件的安装，使用和功能实现方面，大部分厂商采用的是中间件技术，在系统底层与非自身应用程序之间作为中间件存在并实现其功能；另有一些厂商使用的是应用程序或者嵌入技术，相对而言这种方法安全性较低。<br /><br />　　诺顿采用了基于系统最底层的系统核心驱动，这种实现方式是最安全的或者说最高级的实现方式，当然这需要微软的系统源代码级的支持（要花许多money），业界公认，这是最稳定的实现方法，但从目前而言，只诺顿一家。<br /><br />这也就是说，微软给了他大量的底层源代码，而赛门铁克正是基于系统核心层开发，所以才有这么好的稳定性,和WINDOWS系统兼容性最高，cpu占用率是最底的。因此赛门铁克对微软的底层核心层非常了解。只有非常了解微软的底层核心代码才能找到一般杀毒软件所无法找到的后门病毒。 <br /><br />　　而微软新一代操作系统Vista对系统内核的锁定，在赛门铁克无法掌握大量内核代码的情况下，导致赛门铁克与Vista的稳定性和兼容性都不如以往。再也无法在杀毒软件市场中独占螯头。 <br /><br />　　微软的系统几乎全世界的政府和个人都在用，他也是美国政府所支持的，说它在系统里没放后门，打死我都不相信，再说了，USA不是天天说要搞电子战，信息战吗？以美国的技术优势是不可能放过操作系统这种辐射性最强的东西了。 <br /><br />　　联想到欧盟曾经几次要求过微软对其开放核心源代码，要不然就要制裁微软，相信欧盟对微软的win系统也很不放心呀! <br /><br />　　其实中国政府也一直相信微软在系统里设有后门，所以在没有办法的情况下，才要网络的军用线路与民用线路物理隔绝。大家还记得，曾经中国政府在美国卖给中国的波音飞机里发现上千多个窃听器？导致两国的外交尴尬。那么有此推理，美国政府也完全可以在操作系统里设有后门，监视中国的一举一动。 <br /><br />　　所以，这次误杀门事件发生后，中国的信息安全部门曾说过，要对这两个文件仔细研究&hellip;&hellip;&hellip;&hellip;23日cctv新闻。 <br /><br />　　还好，据说现在中国政府要换SUN公司给中国政府特别开发的操作系统了。SUN一直从事服务器系统范围，在全世界的信誉一直很好。而且源代码对中国政府开放。所以比较放心。 <br /><br />　　该交易内容为：Sun将与中国标准软件公司(China Standard Software)合作，向中国政府销售以Linux为基础的桌面操作系统。 Sun将帮助中国政府建立一个开放性的、便宜安全的操作系统。Sun公司CEO麦克尼利在访华时明确表示，将向中国政府开放所有Sun拥有知识产权的 Solaris源代码。Sun称，我们这样做的目的是让友商放心，让政府放心。转自81ina.com<br /><br />　　言下之意就是告诉合作伙伴，我们不搞垄断，不会卡你们的脖子，同时也请政府放心，我们不会在软件里安放什么后门，危及国家安全，我们的代码都在那摆着，你大可以放心使用。而除中国外，韩国、日本、越南、以色列、印度等国家也开始着手进行类似国家信息安全计划。　　<br /><br />　　以上我所猜测的没错的话，那么Symantec拒绝道歉倒也情有可原了，毕竟是吃了哑巴亏，因为它的确没错呀。只是能力太强了。出了问题，涉及到美国国防安全，美国政府完全有理由不让它泄密，让它掩盖事实，只是倒霉的是Symantec自己，和它的声誉。 <br /><br />　　由误杀门事件联想到的是，万一发生台海战争，只要美国政府一动动手指，那么中国90%的电脑全部GAMEOVER！]]></description>
		</item>
		    
		
		<item>
			<title>java中的环境变量问题（转）</title>
			<link>http://eyinsheng.blog.sohu.com/58372880.html</link>
			<comments>http://eyinsheng.blog.sohu.com/58372880.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Sat, 4 Aug 2007 17:41:10 +0800</pubDate>
			<category>程序开发语言</category>
			<guid>http://eyinsheng.blog.sohu.com/58372880.html</guid>
			<description><![CDATA[<font style="BACKGROUND-COLOR: #66ccff" color="#666666" size="3">一、关于环境变量<br />1、JAVA需要什么样的环境变量，这些环境变量有什么作用？<br />&nbsp;&nbsp;&nbsp;&nbsp;JAVA程序能够顺利编译需要两个环境变量，一个是PATH（path），一个是CLASSPATH（classpath）。那么这两个环境变量代表什么呢？或者说究竟在JAVA程序编译中有什么作用呢？这就要涉及到WINDOWS的基本知识了。在WINDOWS环境中，每一条能用的指令都保存在硬盘的&ldquo;某个角落&rdquo;，比如说指令NOTEPAD（WINDOWS的记事本指令，在C:\WINNT目录下），那么在DOS命令提示符下直接输入NOTEPAD就可以打开记事本了。但是一旦我们把C:\WINNT目录下的NOTEPAD.EXE这个可执行文件移开（比如说我们现在把它&ldquo;剪切&rdquo;到D盘根目录下）我们再在DOS提示符下直接输入NOTEPAD时就无法再打开记事本了，但是我们在DOS下改变路径输入D:\NOTEPAD（或者先输入cd D: 在输入NOTEPAD也行）就可以打开记事本了。这就是说在我们直接输入NOTEPAD的时候，其实其默认路径就是C:\WINN。假设我们要运行一个JAVA程序（hello.java）就要先把它的class文件移动到JAVA里的bin目录下&nbsp;&nbsp;然后打开DOS，把路径改到JAVA的BIN目录下 执行java hello.class，一次无所谓 但是每次都要这样去做未免太麻烦。还好WINDOWS提供了一个PATH环境变量，他的作用就是现在这个变量的值路径中去找，如果找到了要运行的EXE就运行，否则失败。如果我们把JAVA里的bin目录这个路径赋给path那么下次我在运行java这个命令的时候，即便是直接输入DOS也能够在path变量中找到JAVA的bin目录下的java指令了。<br />&nbsp;&nbsp;&nbsp;&nbsp;下面说说，classpath环境变量。不知道各位注意到没有，我上面说的那句话&mdash;&mdash;&ldquo;假设我们要运行一个JAVA程序（hello.java）就要先把它的class文件移动到JAVA里的bin目录下&rdquo;，为什么要这样做呢？因为我们在用到java hello.class这条指令的时候，DOS不知道hello.class这个文件在哪里，他就先到当前目录中去找，如果找到就运行，否则失败。当然，如果说hello.java在D盘根目录下，你也可以用java D:\hello.class这条指令来运行，但是每次这样做也确实够麻烦。WINDOWS就提供了这样一个环境变量&mdash;&mdash;classpath，如果没有就应该新建一个。我们把D:\这个路径赋值给classpath，那么下次在运行java hello.java的时候就先在当前目录中到，如果找到就运行，如果找不到就在classpath的值路径下去找，找到就运行，找不到就失败。<br />&nbsp;&nbsp;&nbsp;&nbsp;以上阐述了path和classpath两个环境变量的作用，如果设置好了。java的编译和运行就基本上没什么问题了。至于有些书上说的环境变量javahome初学阶段可以暂时不管它。<br /><br />2、如何设置环境变量？<br />&nbsp;&nbsp;&nbsp;&nbsp;小弟向来鄙视WIN98，我一直用的WIN2000，这里就拿WIN2000（WINXP也一样哈）来举例如何设置环境变量。<br />&nbsp;&nbsp;&nbsp;&nbsp;右击&ldquo;我的电脑&rdquo;，然后&ldquo;属性&rdquo;。在分页卡里选择&ldquo;高级&rdquo;（图片1），然后点击&ldquo;环境变量...&rdquo;按钮，弹出环境变量对话框（如图2）。在下面的系统环境变量中找到path然后双击，在变量值中添加上JAVA的BIN目录的路径（其他的不要删哈，删了后悔不要怪我哟~~~），和其他的路径值用英文状态的;隔开。至于classpath我一般都没有设置，但是比如有些朋友喜欢规范一点，要把java文件全部放到一个文件夹中，比如说D:\javaexe，那么在classpath中加入.;c:\jdk1.3\lib\tools.jar;c:\jdk1.3\lib\dt.jar;D:\javaexe\这个路径。（注意：.;c:\jdk1.3\lib\tools.jar;c:\jdk1.3\lib\dt.jar;这三个不能少）<br /><br /><br />二、关于当前目录<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前在用的目录就是当前目录。比如说当你打开NOTEPAD，并处于运行状态时候，当前目录就是C:\WINNT。如果你在用java这条指令，当前目录就是JAVA下的BIN目录所在的路径。<br /><br /><br /><br />附：<br />图片1<br /><br /><img alt="http://bbs.sxzc.net//images/upfile/20053813659.jpg" src="http://bbs.sxzc.net//images/upfile/20053813659.jpg" /><br /><br />图片2<br /><br /><img alt="http://bbs.sxzc.net//images/upfile/20053813739.jpg" src="http://bbs.sxzc.net//images/upfile/20053813739.jpg" /></font>]]></description>
		</item>
		    
		
		<item>
			<title>令人不解的向下转型(随便讨论一下)</title>
			<link>http://eyinsheng.blog.sohu.com/57860714.html</link>
			<comments>http://eyinsheng.blog.sohu.com/57860714.html#comment</comments>
			<dc:creator>袁小六</dc:creator>
			<pubDate>Wed, 1 Aug 2007 17:27:48 +0800</pubDate>
			<guid>http://eyinsheng.blog.sohu.com/57860714.html</guid>
			<description><![CDATA[<p><font color="#ff0000">估计是编译器不够聪明</font><br /></p>
<p>class A{<br />void a(){<br />&nbsp;&nbsp;System.out.println(&quot;a()&quot;);<br />}<br />}</p>
<p>class B extends A{<br />void b(){<br />&nbsp;&nbsp;System.out.println(&quot;b()&quot;);<br />}<br />}</p>
<p>public class C {<br />&nbsp;&nbsp;&nbsp;&nbsp;public static void main (String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp; A[] test={<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new A(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new B()<br />&nbsp;&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">//test[0].b();</font><font color="#6ba25e">这个大家都能理解<br /></font>&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">//test[1].b();</font><font color="#719966">奇怪就奇怪在这，我觉得应该可以，可是编译器不让我这么做，我看它还不够聪明<br /></font>&nbsp;&nbsp;&nbsp;&nbsp; try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((B)test[0]).b();<font color="#ff0000">//类型不匹配不允许向下转型</font><br />&nbsp;&nbsp;&nbsp;&nbsp; }catch(java.lang.ClassCastException e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;can't cast&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; ((B)test[1]).b();<font color="#ff0000">//传说中的向下转型</font><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></p>]]></description>
		</item>
		    
		
	</channel>
</rss>
