java聊天軟體課程設計心得
❶ java聊天軟體程序設計
客戶端
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class ChatClient extends Frame {
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Thread tRecv = new Thread(new RecvThread());
public static void main(String[] args) {
new ChatClient().launchFrame();
}
public void launchFrame() {
setLocation(400, 300);
this.setSize(300, 300);
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
disconnect();
System.exit(0);
}
});
tfTxt.addActionListener(new TFListener());
setVisible(true);
connect();
tRecv.start();
}
public void connect() {
try {
s = new Socket("127.0.0.1", 8888);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.println("connected!");
bConnected = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void disconnect() {
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
/*
try {
bConnected = false;
tRecv.join();
} catch(InterruptedException e) {
e.printStackTrace();
} finally {
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
*/
}
private class TFListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str = tfTxt.getText().trim();
//taContent.setText(str);
tfTxt.setText("");
try {
//System.out.println(s);
dos.writeUTF(str);
dos.flush();
//dos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
private class RecvThread implements Runnable {
public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
//System.out.println(str);
taContent.setText(taContent.getText() + str + '\n');
}
} catch (SocketException e) {
System.out.println("退出了,bye!");
} catch (EOFException e) {
System.out.println("推出了,bye - bye!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
伺服器端
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args) {
new ChatServer().start();
}
public void start() {
try {
ss = new ServerSocket(8888);
started = true;
} catch (BindException e) {
System.out.println("埠使用中....");
System.out.println("請關掉相關程序並重新運行伺服器!");
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
try {
while(started) {
Socket s = ss.accept();
Client c = new Client(s);
System.out.println("a client connected!");
new Thread(c).start();
clients.add(c);
//dis.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Client implements Runnable {
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;
public Client(Socket s) {
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
bConnected = true;
} catch (IOException e) {
e.printStackTrace();
}
}
public void send(String str) {
try {
dos.writeUTF(str);
} catch (IOException e) {
clients.remove(this);
System.out.println("對方退出了!我從List裡面去掉了!");
//e.printStackTrace();
}
}
public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
System.out.println(str);
for(int i=0; i<clients.size(); i++) {
Client c = clients.get(i);
c.send(str);
//System.out.println(" a string send !");
}
/*
for(Iterator<Client> it = clients.iterator(); it.hasNext(); ) {
Client c = it.next();
c.send(str);
}
*/
/*
Iterator<Client> it = clients.iterator();
while(it.hasNext()) {
Client c = it.next();
c.send(str);
}
*/
}
} catch (EOFException e) {
System.out.println("Client closed!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(dis != null) dis.close();
if(dos != null) dos.close();
if(s != null) {
s.close();
//s = null;
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
❷ 課程設計心得 體會
兩周的課程設計結束了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世。
課程設計是我們專業課程知識綜合應用的實踐訓練,著是我們邁向社會,從事職業工作前一個必不少的過程.」千里之行始於足下」,通過這次課程設計,我深深體會到這句千古名言的真正含義.我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩健地在社會大潮中奔跑打下堅實的基礎.
通過這次模具設計,本人在多方面都有所提高。通過這次模具設計,綜合運用本專業所學課程的理論和生產實際知識進行一次冷沖壓模具設計工作的實際訓練從而培養和提高學生獨立工作能力,鞏固與擴充了冷沖壓模具設計等課程所學的內容,掌握冷沖壓模具設計的方法和步驟,掌握冷沖壓模具設計的基本的模具技能懂得了怎樣分析零件的工藝性,怎樣確定工藝方案,了解了模具的基本結構,提高了計算能力,繪圖能力,熟悉了規范和標准,同時各科相關的課程都有了全面的復習,獨立思考的能力也有了提高。
在這次設計過程中,體現出自己單獨設計模具的能力以及綜合運用知識的能力,體會了學以致用、突出自己勞動成果的喜悅心情,從中發現自己平時學習的不足和薄弱環節,從而加以彌補。
在此感謝我們的xxx老師.,老師嚴謹細致、一絲不苟的作風一直是我工作、學習中的榜樣;老師循循善誘的教導和不拘一格的思路給予我無盡的啟迪;這次模具設計的每個實驗細節和每個數據,都離不開老師您的細心指導。而您開朗的個性和寬容的態度,幫助我能夠很順利的完成了這次課程設計。
同時感謝對我幫助過的同學們,謝謝你們對我的幫助和支持,讓我感受到同學的友誼。
由於本人的設計能力有限,在設計過程中難免出現錯誤,懇請老師們多多指教,我十分樂意接受你們的批評與指正,本人將萬分感謝。
❸ java聊天軟體設計論文
java聊天軟體設計論文
摘 要
隨著互聯網的快速發展,網路聊天工具已經作為一種重要的信息交流工具,受到越來越多的網民的青睞。目前,出現了很多非常不錯的聊天工具,其中應用比較廣泛的有Netmeeting、騰訊QQ、MSN-Messager等等。該系統開發主要包括一個網路聊天伺服器程序和一個網路聊天客戶程序兩個方面。前者通過Socket套接字建立伺服器,伺服器能讀取、轉發客戶端發來信息,並能刷新用戶列表。後者通過與伺服器建立連接,來進行客戶端與客戶端的信息交流。其中用到了區域網通信機制的原理,通過直接繼承Thread類來建立多線程。開發中利用了計算機網路編程的基本理論知識,如TCP/IP協議、客戶端/伺服器端模式(Client/Server模式)、網路編程的設計方法等。在網路編程中對信息的讀取、發送,是利用流來實現信息的交換,其中介紹了對實現一個系統的信息流的分析,包含了一些基本的軟體工程的方法。經過分析這些情況,該區域網聊天工具採用Eclipse為基本開發環境和java語言進行編寫,首先可在短時間內建立系統應用原型,然後,對初始原型系統進行不斷修正和改進,直到形成可行系統
關鍵詞:區域網 聊天 socket java
1 緒論
隨著互聯網逐步普及,人們的生活和工作也越來越離不開信息網路的支持, 而聊天室是人們最常見, 最直接的網上交流的方式。本聊天系統以聊天交流為主,為廣大用戶提供一個藉助網路進行人際交往的平台,也是網路與現實最貼近的實用型網站。本文所介紹的網路聊天系統是基於開放的JAVA應用程序開發設計的,其主要特性是能動態、實時的完成信息的傳遞,且具有高效的交互性,更有效的處理客戶請求,易於維護和更新,其運行所需環境及其工作流程和各個功能控制項的工作原理將在本文依次介紹,並且文中提供了部分程序源代碼。
2 規劃設計
2.1 課題來源
根據當前網路的需求,網路聊天越來越受各種網民所青睞。因此開發網路聊天是相當有必要,而且在網站內增加聊天功能,它不僅可以提高網站的訪問量,同時可以留著訪客,更重要的是讓訪客透過聊天室實時的互相交流。而本人也學習過JAVA語言,對網路編程也較有興趣,為了更好的考驗自己對JAVA語言的掌握程度,本人就決定以《基於JAVA聊天設計與實現》為畢業設計,希望通過這一次的能進一步提高本人的網路開發編程的能力。
2.2需求分析
聊天系統不外乎兩個方面,伺服器端和客戶端。簡單分析一下兩個方面所要完成的任務,對設計這個程序來說,等於完成了一半。首先來看一下伺服器端的任務:
1.伺服器端應當建立一個ServerSocket,並且不斷進行偵聽是否有客戶端連接或者斷開連接(包括判斷沒有響應的連接超時)。
2.伺服器端應當是一個信息發送中心,所有客戶端的信息都傳到伺服器端,由伺服器端根據要求分發信息。
以上就是伺服器端最主要的兩個任務。不難看出,伺服器端的任務並不復雜。
客戶端應該完成的工作包括:
1.與伺服器端建立通信通道,向伺服器端發送信息。
2.接收來自伺服器的信息。
相對伺服器而言,客戶端的任務更加簡單,有了以上的簡單分析,可以知道,解決上述四個問題,即完成了該聊天系統的核心。
3 系統分析與設計方案
3.1 聊天系統的總體設計要點
聊天系統的設計跟普通網站設計有著許多不同的地方,普通網站設計所考慮的因素,例如,普通網站需要對布局進入大量美化以及動畫設計等等,而聊天室只要提供滿足訪客雙方直接實時聊天即可。因此,在設計聊天系統的過程中,必須要考慮好以下幾個設計要點:
1、實現思想
在Internet上的聊天程序一般都是以伺服器提供服務端連接響應,使用者通過客戶端程序登錄到伺服器,就可以與登錄在同一伺服器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在TCP/IP環境下,實現伺服器端和客戶端兩部分程序。
2、伺服器端工作流程
伺服器端通過socket()系統調用創建一個Socket數組後(即設定了接受連接客戶的最大數目),與指定的本地埠綁定bind(),就可以在埠進行偵聽listen()。如果有客戶端連接請求,則在數組中選擇一個空Socket,將客戶端地址賦給這個Socket。然後登錄成功的客戶就可以在伺服器上聊天了。
3、客戶端工作流程
客戶端程序相對簡單,只需要建立一個Socket與伺服器端連接,成功後通過這個Socket來發送和接收數據就可以了。
❹ java課設總結
wsd0701.ttsite.com
❺ java心得 寫的條例分明,我們這次是聊天程序設計,希望速度點 字數越多越好。
本系統是一個基於C/S模式的聊天系統,系統規模不能說大,功能實現也相對較為簡單,但作為一個完整的系統,在整個過程中我還是學到了不少知識,也有較深的體會。
在本次實驗的過程中,我對Java的熟練程度得到了很大的提升,對包括多線程在內的Java語言高級技術掌握得也更熟了,更對面向對象的分析思想,面向對象的設計方法有了直觀的體會。
由於本次要實現的系統是基於C/S模式,這其中需要用到計算機網路知識,需要熟悉socket編程,更要將網路編程與多線程結合起來,使多個線程協調工作,這要求對網路傳輸原理有較深的理解。在本次實驗中,我對網路的工作原理有了更多的體會。
本次系統的功能相對還比較單一,知識能在一個聊天室里群聊,離一個即時通訊軟體還有很大差距,以後如有時間,可以考慮去做一個真正類QQ的通訊軟體。
❻ java課程設計結束了,老師要我們寫心得體會,好心人幫我寫一份吧
Java 是一門高科技語言...學習上要做到嚴謹細心 平時要多加練習 實際操作 總的來說這課有點難