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("");
}
}
}
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。