當前位置:首頁 » 課程大全 » java聊天軟體課程設計

java聊天軟體課程設計

發布時間: 2021-03-14 03:01:29

『壹』 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();
}

}
}

}
}

『貳』 求一個用java編寫的類似QQ的聊天軟體 謝謝給我大神了,我做畢業設計要 現在我的水平寫不出來

我做過一個很簡單的,剛找到了代碼。但是你的qq搜索不到

『叄』 如何用java設計並實現一個聊天軟體的圖形界面

主要還是靠自己想怎麼去做。
簡單的就很簡單。
復雜的像QQ這樣我覺得也挺復雜。

根據自己的想法,通過使用java和界面相關的知識,
如swing等。我想可以完成吧。

『肆』 求一個JAVA程序設計-聊天室的程序,要是有課程設計報告書和系統最好!

哎 現在的學生
我有一個 功能有私聊 群聊 發文件 截屏 視頻 。。

『伍』 求JAVA課程設計類似QQ聊天軟體源代碼……不要太高深簡單的就好 發送到[email protected]^謝謝

java代碼還是android代碼。

『陸』 JAVA編寫的聊天工具

//以下引入包
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.applet.*;
public class regit extends JApplet implements ActionListener,ItemListener//介面
{
String s=null;
//對象的聲明
JLabel labelname,labelpass,labelsxe,labeladdress,labelmail,labelphone;//標簽
JTextField textname,textaddress,textmail,textphone;//文本框
JRadioButton r1,r2;//單選按紐
ButtonGroup bg;//組
JPasswordField textpass;//密碼域
JButton buttonregit,buttonreset;//注冊按紐 重寫按紐
JPanel p;//面板
String sex;//定義性別字元串

URL url;//統一資源定位
BufferedWriter out1,out2;//流
BufferedReader in;

//布局方式
GridBagLayout gbl;
GridBagConstraints gc;
AppletContext co;//介面

//初始化
public void init()
{
//new 對象
labelname=new JLabel("用 戶 名:");
labelpass=new JLabel("用戶密碼:");
labelsxe=new JLabel("性別:");
labeladdress=new JLabel("地址:");
labelmail=new JLabel("電子郵件:");
labelphone=new JLabel("聯系電話:");

textname=new JTextField(15); textname.setForeground(Color.red);
textname.setToolTipText("請在這輸入你的用戶名");
textaddress=new JTextField(15);textaddress.setForeground(Color.red);
textaddress.setToolTipText("請在這輸入你的地址");
textmail=new JTextField(15); textmail.setForeground(Color.red);
textmail.setToolTipText("請在這里輸入你的E-mail地址");
textphone=new JTextField(15); textphone.setForeground(Color.red);
textphone.setToolTipText("請在這輸入你的電話號碼");

r1=new JRadioButton("男"); r1.setBackground(new Color(47,177,210));//設置顏色
r2=new JRadioButton("女"); r2.setBackground(new Color(47,177,210));//設置顏色
bg=new ButtonGroup();
bg.add(r1);bg.add(r2);//加入組,實現單選

textpass=new JPasswordField(15);
textpass.setToolTipText("在這里輸入密碼");
textpass.setForeground(Color.red);

buttonregit=new JButton("注冊"); buttonregit.setBackground(new Color(47,177,210));//設置顏色
buttonregit.setToolTipText("點擊按紐完成注冊");
buttonreset=new JButton("填寫"); buttonreset.setBackground(new Color(47,177,210));//設置顏色
buttonreset.setToolTipText("點擊按紐刷新重寫");

gbl=new GridBagLayout(); ///////////////////////////////////////
gc=new GridBagConstraints(); //////採用GridBagLayout布局方式////////

p=new JPanel();
p.setLayout(gbl);
p.setBackground(new Color(47,177,210));

this.getContentPane().add(p);//加入面板

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=2;
gbl.setConstraints(labelname,gc);
p.add(labelname);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=2;
gbl.setConstraints(textname,gc);
p.add(textname);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=4;
gbl.setConstraints(labelpass,gc);
p.add(labelpass);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=4;
gbl.setConstraints(textpass,gc);
p.add(textpass);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=6;
gbl.setConstraints(labelsxe,gc);
p.add(labelsxe);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=6;
gbl.setConstraints(r1,gc);
p.add(r1);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=5;
gc.gridy=6;
gbl.setConstraints(r2,gc);
p.add(r2);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=8;
gbl.setConstraints(labeladdress,gc);
p.add(labeladdress);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=8;
gbl.setConstraints(textaddress,gc);
p.add(textaddress);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=10;
gbl.setConstraints(labelmail,gc);
p.add(labelmail);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=10;
gbl.setConstraints(textmail,gc);
p.add(textmail);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=12;
gbl.setConstraints(labelphone,gc);
p.add(labelphone);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=12;
gbl.setConstraints(textphone,gc);
p.add(textphone);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=2;
gc.gridy=16;
gbl.setConstraints(buttonregit,gc);
p.add(buttonregit);

gc.anchor=GridBagConstraints.NORTHWEST;
gc.gridx=4;
gc.gridy=16;
gbl.setConstraints(buttonreset,gc);
p.add(buttonreset);

/////////////////////////////////////////////
co=this.getAppletContext();
/////////////////////////////////////////////
buttonregit.addActionListener(this);//按紐事件的監聽
buttonreset.addActionListener(this);//按紐事件的監聽
r1.addItemListener(this);//選擇事件的監聽
r2.addItemListener(this);//選擇事件的監聽
textphone.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
//注冊按紐事件
if(e.getSource()==buttonregit)
{
String s1=textname.getText(); ////////////////////
String s2=new String(textpass.getPassword());////////////////////
String s3=textaddress.getText(); // 定義字元串 //
String s4=textmail.getText(); ////////////////////
String s5=textphone.getText(); ////////////////////
//判斷注冊資料 信息 是否為空
if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)
{
int error=JOptionPane.INFORMATION_MESSAGE;
JOptionPane.showMessageDialog(null,"資料不能為空,請重新注冊!","【溫馨提示】",error);
return;//彈出對話框並返回
}

try//寫入到txt文件
{
in=new BufferedReader(new FileReader("d:\\迷離視線聊天室\\password.txt"));
}
catch(Exception ee){}
String ss=s1;
try
{
while((s=in.readLine())!=null)
{
if(s.startsWith(ss))
{
JOptionPane.showMessageDialog(null,"用戶名已經存在,請更換名字!");
textname.setText("");//設置為空,重新輸入
textpass.setText("");
textaddress.setText("");
textmail.setText("");
textphone.setText("");
return;
}
}
}
catch(Exception ee){}
///////////////////////////以上代碼判斷是否有同名

{
try
{
out1=new BufferedWriter(new FileWriter("d:\\迷離視線聊天室\\password.txt",true));
out2=new BufferedWriter(new FileWriter("d:\\迷離視線聊天室\\message.txt",true));
}//創建文件
catch(Exception ee)
{}

try
{
out1.write(s1+"#"+s2);//寫
out1.newLine();
out2.write("用戶名:"+s1);
out2.newLine();
out2.write("密碼:"+s2);
out2.newLine();
out2.write("性別:"+sex);
out2.newLine();
out2.write("地址:"+s3);
out2.newLine();
out2.write("電子郵件:"+s4);
out2.newLine();
out2.write("電話:"+s5);
out2.newLine();
out1.flush();
out2.flush();//清理緩沖
out1.close();
out2.close();
}
catch(Exception ee)
{}
JOptionPane.showMessageDialog(null,"注冊成功!");
try
{
String qss="http://localhost/chatroom/chatjiemian.htm";
url=new url(/qss);//連接上網址
co.showDocument(url);
}
catch(Exception exx)
{}
}

}
//////////////////////以下為回車事件
if(e.getSource()==textphone)
{
String s1=textname.getText(); ////////////////////
String s2=new String(textpass.getPassword());////////////////////
String s3=textaddress.getText(); // 定義字元串 //
String s4=textmail.getText(); ////////////////////
String s5=textphone.getText(); ////////////////////
//判斷注冊資料 信息 是否為空
if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)
{
int error=JOptionPane.INFORMATION_MESSAGE;
JOptionPane.showMessageDialog(null,"資料不能為空,請重新注冊!","【溫馨提示】",error);
return;//彈出對話框並返回
}

try//寫入到txt文件
{
in=new BufferedReader(new FileReader("d:\\迷離視線聊天室\\password.txt"));
}
catch(Exception ee){}
String ss=s1;
try
{
while((s=in.readLine())!=null)
{
if(s.startsWith(ss))
{
JOptionPane.showMessageDialog(null,"用戶名已經存在,請更換名字!");
textname.setText("");//設置為空,重新輸入
textpass.setText("");
textaddress.setText("");
textmail.setText("");
textphone.setText("");
return;
}
}
}
catch(Exception ee){}
///////////////////////////以上代碼判斷是否有同名

{
try
{
out1=new BufferedWriter(new FileWriter("d:\\迷離視線聊天室\\password.txt",true));
out2=new BufferedWriter(new FileWriter("d:\\迷離視線聊天室\\message.txt",true));
}//創建文件
catch(Exception ee)
{}

try
{
out1.write(s1+"#"+s2);//寫
out1.newLine();
out2.write("用戶名:"+s1+"密碼:"+s2+"性別:"+sex+"地址:"+s3+"電子郵件:"+s4+"電話:"+s5);//寫
out2.newLine();
out1.flush();
out2.flush();//清理緩沖
out1.close();
out2.close();
}
catch(Exception ee)
{}
JOptionPane.showMessageDialog(null,"注冊成功!");
try
{
String qss="http://localhost/chatroom/chatjiemian.htm";
url=new url(/qss);//連接上網址
co.showDocument(url);
}
catch(Exception exx)
{}
}

}
if(e.getSource()==buttonreset)//刷新重寫事件
{
textname.setText("");
textpass.setText("");
textaddress.setText("");
textmail.setText("");
textphone.setText("");
}

}
//////////////////////////////////////////
//
public void itemStateChanged(ItemEvent ex)
{
if(ex.getSource()==r1)
{
sex=new String("男");
}
else if(ex.getSource()==r2)
{
sex=new String("女");
}
}
}

『柒』 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設計並實現一個聊天軟體的圖形界面

是比較簡單,應該用C/S模式吧,這樣的話有點像QQ,你可以參考QQ的界面.

『玖』 如何用Java編寫一個聊天室程序,可以支持單聊和多聊

聊天復程序又叫即時通訊系統制
分類兩部分:客戶端和服務端
客戶端:用戶聊天的界面
服務端:接收消息並轉發到指定用戶
其中服務端和客戶端用tcp或者udp連接,使用socket編程完成通信。
按著這個思路可以開發出一套聊天程序
客戶端常用界面 bs版本的又layim
服務端 openfire或者自己實現

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919