




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、江蘇經(jīng)貿職業(yè)技術學院信息技術學院2015-2016-2學年網(wǎng)絡編程技術(java)課程期末大作業(yè)姓 名:高文頂學 號:班 級:14網(wǎng)絡專 業(yè):計算機網(wǎng)絡技術作品名稱:模仿QQ的簡單即時通信工具2016年4月一、程序功能簡介本程序擁有圖形界面和一對一聊天程序,實現(xiàn)監(jiān)聽連接、發(fā)送、退出功能。先啟動Server服務器端程序進行端口監(jiān)聽,然后啟動Client客戶端連接Server端IP地址和端口號,Server端監(jiān)聽到后顯示連接成功,可以進行通信。二、運行界面截圖(一)界面主程序(二)客戶端程序三、核心代碼說明(一)Client.java核心代碼說明示例package gwd;import java.
2、awt.*;import java.awt.event.*;import java.io.*;import .InetAddress;import .InetSocketAddress;import .Socket;import .UnknownHostException;import javax.swing.*;import javax.swing.border.EmptyBorder;public class Client extends JFrame implements Runnable, ActionListener,
3、KeyListener private static final long serialVersionUID = L;private JScrollPane textPane;/滾動條private JLabel pcLabel,portLabel;/標簽private JTextArea chatArea;/聊天內容區(qū)域private JTextField pctextField,porttextField,sendField;/文本框private JButton connectButton,sendButton;/按鈕private Socket socket;/客戶端套接字對象priv
4、ate DataInputStream in;/數(shù)據(jù)輸入流對象private DataOutputStream out;/數(shù)據(jù)輸出流對象private Thread thread;/線程private JComboBox namecomboBox;/下拉列表框public Client() createUserInterface();/調用圖形界面setTitle(客戶端);/設置標題setSize(550,500);/設置寬度 和高度setResizable( false );/禁用界面最大化setLocationRelativeTo(null);/自動釋放大小setVisible(true
5、);/窗口顯示出來setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/點擊關閉 默認關閉窗口public void createUserInterface() setLayout(null);/設置布局JPanel contentPane=new JPanel();/創(chuàng)建頂部 panelcontentPane.setBounds(5, 5, 525 , 50);/設置panel坐標add(contentPane);/添加控件到 窗口屏幕中pcLabel = new JLabel(主機:);/創(chuàng)建主機標簽contentPane.add(pcLabel)
6、;pctextField = new JTextField();/創(chuàng)建主機文本框contentPane.add(pctextField);pctextField.setColumns(10);portLabel = new JLabel(端口);/創(chuàng)建端口標簽contentPane.add(portLabel);porttextField = new JTextField();/創(chuàng)建端口文本框porttextField.setColumns(10);contentPane.add(porttextField); namecomboBox = new JComboBox();/創(chuàng)建下拉列表框na
7、mecomboBox.addItem( 張三 );/設置值namecomboBox.addItem( 李四 );/設置值namecomboBox.setSelectedIndex( 0 );namecomboBox.setEditable(true);/設置允許 選擇contentPane.add(namecomboBox);chatArea = new JTextArea();/創(chuàng)建聊天內容區(qū)域chatArea.setLineWrap(true);/設置換行textPane = new JScrollPane(chatArea);/滾動條textPane.setBounds(5, 60, 5
8、25, 360);add(textPane);sendButton = new JButton(發(fā)送);/創(chuàng)建發(fā)送按鈕sendButton.setBounds(355, 430, 80, 24);sendButton.addKeyListener(this);/綁定發(fā)送按鈕鍵盤對象sendButton.addActionListener(this);/綁定發(fā)送按鈕點擊對象add(sendButton);sendField = new JTextField(255);/創(chuàng)建發(fā)送文本框sendField.setBounds(5, 430, 330, 24);sendField.addKeyList
9、ener(this);/發(fā)送文本框綁定鍵盤事件add(sendField);connectButton = new JButton(連接);/創(chuàng)建連接按鈕connectButton.setBounds(450, 430, 80, 24);connectButton.addActionListener(this);/綁定連接按鈕對象contentPane.add(connectButton);socket = new Socket();/創(chuàng)建客戶端Sokcet對象thread = new Thread(this);/創(chuàng)建線程對象public void connect() /創(chuàng)建客戶端Socket
10、套接字try if (!socket.isConnected() /判斷套接字是否連接成功InetAddress address = InetAddress.getByName(pctextField.getText();/獲取本地IP地址對象InetSocketAddress socketAddress = new InetSocketAddress(address, Integer.parseInt(porttextField.getText();/創(chuàng)建InetSocketAddress對象socket.connect(socketAddress);/連接服務器in = new DataI
11、nputStream(socket.getInputStream();/創(chuàng)建數(shù)據(jù)輸入流對象out = new DataOutputStream(socket.getOutputStream();/創(chuàng)建數(shù)據(jù)輸出流對象sendButton.setEnabled(true);/啟動發(fā)送按鈕if (!(thread.isAlive() /判斷線程是否激活thread = new Thread(this);/創(chuàng)建線程對象thread.start();/啟動線程 catch (Exception e) System.out.println(e);socket = new Socket();/創(chuàng)建Socke
12、t對象public void send() /向客戶端發(fā)送消息String msg = sendField.getText().trim();/獲取發(fā)送消息內容 if (msg.isEmpty() /判斷是否為空JOptionPane.showMessageDialog(this, 請輸入發(fā)送消息.);/提示消息return;chatArea.append(namecomboBox.getSelectedItem()+: + msg + n);/追加文本到聊天內容區(qū)域中try out.writeUTF(namecomboBox.getSelectedItem()+: +msg);/發(fā)送消息到客
13、戶端sendField.setText();/清空消息 catch (Exception e) e.printStackTrace();public void actionPerformed(ActionEvent arg0) /點擊事件if (arg0.getSource() = sendButton) /發(fā)送按鈕send();/發(fā)送消息 else if (arg0.getSource() = connectButton) /連接對象connect();/啟動客戶端套接字對象public void run() /啟動線程if (Thread.currentThread() = thread)
14、 /判斷是否 當前線程String msg = null;while (true) /循環(huán)接收客戶端消息try msg = in.readUTF();/將數(shù)據(jù)讀取出來chatArea.append(服務器: + msg + n);/顯示文本域中 catch (IOException e) e.printStackTrace();socket = new Socket();break;public void keyPressed(KeyEvent arg0) / 鍵盤按下if (arg0.getKeyCode() = KeyEvent.VK_ENTER) send();/發(fā)送消息Override
15、public void keyReleased(KeyEvent arg0) Overridepublic void keyTyped(KeyEvent arg0) public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try Client frame = new Client();frame.setVisible(true); catch (Exception e) e.printStackTrace(););二、Server.java核心代碼說明示例packa
16、ge gwd;import java.awt.*;import javax.swing.*;import javax.swing.border.EmptyBorder;import java.awt.event.*;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.awt.event.ActionEvent;import java.awt.
17、event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.s
18、wing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class Server extends JFrame implements Runnable, ActionListener, KeyListener private JScrollPane textPane;/滾動條private JLabel portLabel;/標簽private JTextArea chatArea;/聊天內容區(qū)域private JTextField portField,sendField;/文本框pr
19、ivate JButton sendButton,startButton;/按鈕private ServerSocket serversocket;/服務器套接字對象private Socket socket;/客戶端套接字對象private DataInputStream in;/數(shù)據(jù)輸入流對象private DataOutputStream out;/數(shù)據(jù)輸出流對象private Thread thread;/線程public Server() createUserInterface();/調用圖形界面setTitle(服務器);/設置標題setSize(550,500);/設置寬度 和高
20、度setResizable( false );/禁用界面最大化setLocationRelativeTo(null);/自動釋放大小setVisible(true); /顯示出來setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/點擊關閉 默認關閉窗口public void createUserInterface() setLayout(null);/設置布局JPanel contentPane=new JPanel();/創(chuàng)建頂部 panelcontentPane.setBounds(5, 5, 525, 50);/設置panel坐標add(con
21、tentPane);portLabel = new JLabel(端口);/創(chuàng)建端口標簽contentPane.add(portLabel);portField = new JTextField();/創(chuàng)建端口文本框contentPane.add(portField);portField.setColumns(10);chatArea = new JTextArea();/創(chuàng)建聊天內容區(qū)域chatArea.setLineWrap(true);/設置換行textPane = new JScrollPane(chatArea);/滾動條textPane.setBounds(5, 60, 525,
22、360);add(textPane);sendButton = new JButton(發(fā)送);/創(chuàng)建發(fā)送按鈕sendButton.setBounds(355, 430, 80, 24);sendButton.addActionListener(this);/綁定發(fā)送按鈕點擊對象add(sendButton);sendField = new JTextField(255);/創(chuàng)建發(fā)送文本框sendField.setBounds(5, 430, 330, 24);sendField.addKeyListener(this);/消息框 綁定鍵盤事件監(jiān)聽add(sendField);startBut
23、ton = new JButton(啟動);/創(chuàng)建啟動按鈕startButton.setBounds(450, 430, 80, 24);startButton.addActionListener(this);/綁定啟動按鈕對象contentPane.add(startButton);thread = new Thread();/創(chuàng)建線程對象public void connect() /創(chuàng)建服務器ServerSocket套接字try chatArea.append(請稍等.n);/添加文本到聊天內容區(qū)域中 serversocket = new ServerSocket(Integer.pars
24、eInt(portField.getText();/創(chuàng)建ServerSocket 套接字對象socket = serversocket.accept();/接收 客戶端 套接字對象chatArea.append(連接成功. n);/追加信息到聊天內容區(qū)域中,顯示成功連接服務器in = new DataInputStream(socket.getInputStream();/創(chuàng)建數(shù)據(jù)輸入流對象out = new DataOutputStream(socket.getOutputStream();/創(chuàng)建數(shù)據(jù)輸出流對象if (!thread.isAlive() /判斷線程是否激活thread = n
25、ew Thread(this);/創(chuàng)建線程對象thread.start();/啟動線程 catch (Exception e) System.out.println(e);try serversocket = new ServerSocket();/創(chuàng)建ServerSocket 套接字對象 catch (IOException e1) e1.printStackTrace();public void send() /向客戶端發(fā)送消息String msg = sendField.getText().trim();/獲取發(fā)送消息內容if (msg.isEmpty() /判斷是否為空JOptionPane.showMessageDialog(this, 請輸入發(fā)送消息.);/提示消息return;chatArea.append(服務器: + msg + n);/追加文本到聊天內容區(qū)域中try out.writeUTF(msg);/發(fā)送消息到客戶端sendField.setText(); catch (Exception e) e.printStackTrace();public void actionPerformed(ActionEvent arg0) /鍵盤事件if (arg0.g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童心理健康的提升與干預
- 【教學案例】跨境電商專題頁營銷策劃
- 保護輸電線路安全法律問題分析
- 陜西省渭南市蒲城縣2024-2025學年七年級下學期末質量檢測語文試卷(含答案)
- 山東省德州市2025屆高三下學期三模生物試卷(有答案)
- 巾幗活動展覽活動方案
- 工會冬季出游活動方案
- 工廠小年活動策劃方案
- 展館內文化沙龍活動方案
- 小班特色涂鴉活動方案
- 2024年人教版八年級語文下冊期末考試卷(附答案)
- 影視劇組場地租賃合同
- 個體工商戶食品安全管理制度
- TSXCAS 015-2023 全固廢低碳膠凝材料應用技術標準
- 北京交通大學《交通系統(tǒng)建模與測試技術》2022-2023學年第一學期期末試卷
- 耳穴考核試題及答案
- 2024年浙江省中考社會試卷真題(含標準答案及評分標準)
- 廣東省廣州市白云廣雅2024-2025學年七年級上學期開學測英語試題+(無答案)
- 《無人機法律法規(guī)知識》課件-第1章 民用航空法概述
- 農作物植保員技能競賽備考試題庫400題(含答案)
- 2.2.1 有理數(shù)的乘法(第一課時)-課件
評論
0/150
提交評論