java Socket簡略單純聊天對象。本站提示廣大學習愛好者:(java Socket簡略單純聊天對象)文章只能為提供參考,不一定能成為您想要的結果。以下是java Socket簡略單純聊天對象正文
本文實例為年夜家分享了一款Socket簡略單純聊天對象,願望年夜家愛好。
代碼運轉如圖,看起來還不錯
辦事端
package qiu; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.print.Printable; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Calendar; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; /** * 簡略聊天軟件的辦事器 * */ public class MyServer extends JFrame implements ActionListener{ JTextArea jTextArea =null;//用來顯示純文本的單行區域 JTextField jTextField=null;//可以許可用來編纂單行文本 JButton sendButton=null; JPanel jPanel=null; JScrollPane jScrollPane =null; //把信息發給客戶端對象 PrintWriter printWriter =null; /** * 辦事真個主函數 * */ public static void main(String[] args) { // TODO Auto-generated method stub new MyServer(); } /** * 辦事真個結構函數,用來停止初始化 * */ public MyServer(){ //這裡是對GUI的初始化 jTextArea = new JTextArea(); jTextField= new JTextField(20); sendButton= new JButton("發送"); sendButton.addActionListener(this); sendButton.setActionCommand("send"); jScrollPane= new JScrollPane(jTextArea); jPanel = new JPanel(); jPanel.add(jTextField);//添加編纂框 jPanel.add(sendButton);//添加按鈕 //將兩個面板添加結構 this.add(jScrollPane,BorderLayout.CENTER); this.add(jPanel,BorderLayout.SOUTH); this.setSize(400,300); this.setTitle("聊天辦事器"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置加入按鈕 this.setVisible(true); this.setResizable(true); //上面是socket辦事器的搭建 try { //辦事器監聽 ServerSocket ss = new ServerSocket(9988); //期待客戶端銜接 Socket socket = ss.accept(); //取得客戶端發送過去的數據的流 BufferedReader br = new BufferedReader (new InputStreamReader(socket.getInputStream())); printWriter = new PrintWriter(socket.getOutputStream(),true); //讀取從客戶端發送過去的信息 while(true){ String info = br.readLine(); jTextArea.append("客戶端 "+getTime()+"\r\n"+info+"\r\n"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 用來獲得以後的時光 * @return 以後的時光 */ public String getTime(){ //可以對每一個零丁時光域停止修正 Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY);//獲得小時 int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); return hour+":"+minute+":"+second; } /** * 當button被點擊的時刻挪用 */ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //當按鈕按下的時刻挪用 if(e.getActionCommand().equals("send")){ //把辦事器在jTextField寫的內容發送給客戶端 String info= jTextField.getText(); jTextArea.append("辦事器 "+getTime()+"\r\n"+info+"\r\n"); printWriter.println(info); //清晰發送框內容 jTextField.setText(""); } } }
客戶端
package qiu; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Calendar; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; /** * 簡略聊天軟件的客戶端 * */ public class MyClient extends JFrame implements ActionListener{ JTextArea jTextArea=null; JTextField jTextField=null; JPanel jPanel=null; JScrollPane jScrollPane=null; JButton sendButton=null; PrintWriter printWriter=null; /** * 客戶真個主函數 * */ public static void main(String[] args) { // TODO Auto-generated method stub new MyClient(); } /** * 客戶端結構函數用來初始化 * */ public MyClient(){ //GUI初始化 jTextArea= new JTextArea(); jTextField=new JTextField(20); sendButton= new JButton("發送"); sendButton.addActionListener(this); sendButton.setActionCommand("send"); jScrollPane=new JScrollPane(jTextArea); jPanel=new JPanel(); jPanel.add(jTextField); jPanel.add(sendButton); this.add(jScrollPane,BorderLayout.CENTER); this.add(jPanel,BorderLayout.SOUTH); this.setSize(400, 300); this.setTitle("聊天客戶端"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setResizable(true); //socket通訊代碼 try { Socket s= new Socket("127.0.0.1",9988); BufferedReader br = new BufferedReader (new InputStreamReader(s.getInputStream())); printWriter= new PrintWriter(s.getOutputStream(),true); while(true){ //一直的讀取辦事器發過去的信息 String string=br.readLine(); jTextArea.append("辦事器 "+getTime()+"\r\n"+string+"\r\n"); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 用來獲得以後的時光 * @return 以後的時光 */ public String getTime(){ //可以對每一個零丁時光域停止修正 Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY);//獲得小時 int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); return hour+":"+minute+":"+second; } /** * 當button被點擊的時刻挪用 */ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(sendButton.getActionCommand().equals("send")){ String info= jTextField.getText(); //將客戶端發送的信息發送給辦事端 jTextArea.append("客戶端 "+getTime()+"\r\n"+info+"\r\n"); printWriter.println(info); jTextField.setText(""); } } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。