




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第java實(shí)現(xiàn)在線(xiàn)聊天系統(tǒng)dis=newDataInputStream(s.getInputStream());
dos=newDataOutputStream(s.getOutputStream());
bConnected=true;
System.out.println("有一個(gè)新的客戶(hù)端程序在運(yùn)行");
}catch(IOExceptione){
e.printStackTrace();
}
//一個(gè)客戶(hù)端連接成功以后,一直在執(zhí)行該while部分的代碼,其他客戶(hù)端無(wú)法連接
/**
*解決方法:1.異步解決方法:一直監(jiān)聽(tīng)接收,其他在另外的地方執(zhí)行2.使用單獨(dú)的線(xiàn)程:線(xiàn)程:接受客戶(hù)端連接
*另外的單獨(dú)的線(xiàn)程:處理通訊
*/
}
publicvoidsendString(Stringstr){
try{
dos.writeUTF(str);
}catch(IOExceptione){
clients.remove(this);
System.out.println("對(duì)方退出了!??!我從List中去掉了!??!");
}
}
publicvoidrun(){
Clientclient=null;
//注意這部分的包圍關(guān)系
try{
while(bConnected){
Stringstring=dis.readUTF();
System.out.println(string);
for(inti=0;iclients.size();i++){
client=clients.get(i);
client.sendString(string);
}
}
}catch(EOFExceptione){
System.out.println("Clientclosed!");
}catch(IOExceptione){
e.printStackTrace();
System.exit(0);
}finally{
try{
if(dis!=null){
dis.close();
}
if(s!=null){
s.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}
客戶(hù)端代碼:
importjava.awt.BorderLayout;
importjava.awt.Frame;
importjava.awt.TextArea;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.EOFException;
importjava.io.IOException;
import.BindException;
import.Socket;
import.SocketException;
import.UnknownHostException;
*可以和ChatServer版本三配套使用
*@authorAdministrator
publicclassChatClientEdition3extendsFrame{
TextFieldtfText=newTextField();
TextAreataContent=newTextArea();
Socketsocket=null;
DataOutputStreamdataOutputStream=null;
DataInputStreamdataInputStream=null;
privatebooleanbConnected=false;
publicstaticvoidmain(String[]args){
newChatClientEdition3().launchFrame();
}
//加載窗口
publicvoidlaunchFrame(){
setLocation(400,300);
this.setSize(300,300);
this.setTitle("在線(xiàn)聊天時(shí)--Quiana");
add(tfText,BorderLayout.SOUTH);
add(taContent,BorderLayout.NORTH);
pack();
//窗口關(guān)閉的時(shí)間監(jiān)聽(tīng)
this.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
disconnect();
System.exit(0);
}
});
tfText.addActionListener(newTFListener());
this.setVisible(true);
connect();
newThread(newRecvThread()).start();
}
//文字處理的時(shí)間監(jiān)聽(tīng)
privateclassTFListenerimplementsActionListener{
//敲擊回車(chē)時(shí),文字的變化事件
@Override
publicvoidactionPerformed(ActionEventarg0){
Strings=tfText.getText().trim();//去掉兩端的空格
tfText.setText("");
try{
dataOutputStream.writeUTF(s);
dataOutputStream.flush();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
//連接到服務(wù)器
publicvoidconnect(){
try{
//連接到服務(wù)器
socket=newSocket("",8888);
bConnected=true;
dataOutputStream=newDataOutputStream(socket.getOutputStream());
dataInputStream=newDataInputStream(socket.getInputStream());
System.out.println("連接到服務(wù)器!??!");
}catch(BindExceptione){
e.printStackTrace();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
//斷開(kāi)連接
publicvoiddisconnect(){
try{
dataOutputStream.close();
System.out.println("dataOutputStream成功關(guān)閉");
socket.close();
System.out.println("客戶(hù)端socket成功關(guān)閉");
}catch(IOExceptione){
e.printStackTrace();
}
}
privateclassRecvThreadimplementsRunnable{
publicvoidrun(){
try{
while(bConnected){
Stringstring=dataInputStream.readUTF();
if(taContent.getText().length()==0){
taContent.setText(string);
}else{
taContent.setText(taContent.getText()+"\n"+string);
}
}
}catch(SocketExceptione){
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車(chē)輛開(kāi)運(yùn)輸發(fā)票合同協(xié)議
- 遠(yuǎn)程醫(yī)療服務(wù)合同協(xié)議
- 河道入股協(xié)議書(shū)
- 郵送廣告制作合同協(xié)議
- 跪求個(gè)人協(xié)議合同協(xié)議
- 送菜合同協(xié)議書(shū)模板
- 運(yùn)輸砂石料合同協(xié)議
- 退伙協(xié)議書(shū)退款協(xié)議
- 晉江跨鎮(zhèn)協(xié)議書(shū)
- 景區(qū)救護(hù)協(xié)議書(shū)
- 植物生理學(xué)(齊魯師范學(xué)院)知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春齊魯師范學(xué)院
- 2024年廣東省初中學(xué)業(yè)水平考試第一次模擬考試物理試題
- iata第 66版危險(xiǎn)貨物規(guī)則(dgr 66th)
- 北師大版數(shù)學(xué)八年級(jí)下學(xué)期 全等三角形七大模型 知識(shí)梳理+練習(xí) (含解析)
- 指導(dǎo)腎性貧血患者自我管理的中國(guó)專(zhuān)家共識(shí)(2024版)解讀課件
- 2023年新課標(biāo)全國(guó)ⅰ卷英語(yǔ)真題(解析)
- 公共管理學(xué)方法論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋華南農(nóng)業(yè)大學(xué)
- 《家禽飼養(yǎng)方式》課件
- 《裝配式碳纖維增強(qiáng)免拆底模鋼筋桁架樓承板(HF)應(yīng)用技術(shù)標(biāo)準(zhǔn)》
- 人工智能在機(jī)能學(xué)實(shí)驗(yàn)教學(xué)應(yīng)用圖景的構(gòu)設(shè)與挑戰(zhàn)
- Unit 6 Beautiful landscapes Integration說(shuō)課稿 - 2024-2025學(xué)年譯林版英語(yǔ)七年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論