資源簡介
代碼+問題分析+解決方案
實踐內容:
編寫簡單的多線程 web服務器
實現過程:
該實驗我做的是一個聊天系統,實現的功能是:
服務端可以任意指定一個端口號建立服務器,等待的客戶的連接,若有客戶連接上,則有相應的提示,斷開連接也有相應的提示,此外服務器可以向所有在線用戶廣播消息,也可以查看客戶的聊天記錄!
客戶端需要填寫服務器的IP及端口號及自己的ID方可連接服務器,客戶端只要一連接上服務器就可以看見目前的上線人數,選擇其一就可以與其聊天,你也可以和自己聊天來取樂!
代碼片段和文件信息
package?client;
//客戶端通信線程
//Client.java
import?java.util.*;
import?java.net.*;
import?java.io.*;
import?javax.swing.*;
class?Client?extends?Thread?{
Socket?socket_0931;
InetAddress?host_0931;
int?port_0931;
String?name_0931;
BufferedReader?in_0931;
PrintStream?out_0931;
String?message_0931;
ClientGUI?chat_0931;
public?Client(String?Address?int?port?String?name?ClientGUI?chat)?{
try?{
host_0931?=?InetAddress.getByName(Address);
this.port_0931?=?port;
this.chat_0931?=?chat;
this.name_0931?=?name;
}?catch?(IOException?e)?{
chat.receiveMsg
.append(“The?constructor?of?Client?encounters?a??problem!“
+?e.toString());
}
}
public?void?run()?{
try?{
socket_0931?=?new?Socket(host_0931?port_0931);
chat_0931.receiveMsg.append(“連接成功!\n“);
out_0931?=?new?PrintStream(socket_0931.getOutputStream());
out_0931.println(name_0931);
out_0931.flush();
in_0931?=?new?BufferedReader(new?InputStreamReader(socket_0931
.getInputStream()));
while?(true)?{
message_0931?=?in_0931.readLine();
if?(message_0931.startsWith(“添加用戶“))?{
chat_0931.lists.add(message_0931.substring(4));
}?else?if?(message_0931.startsWith(“刪除用戶“))?{
chat_0931.lists.remove(message_0931.substring(4));
}?else?{
//chat_0931.receiveMsg.append(“\n“);
chat_0931.receiveMsg.append(message_0931?+?“\n“);
}
}
}?catch?(SocketException?e)?{
chat_0931.receiveMsg.append(“連接失敗!\n“);
chat_0931.connect.setEnabled(true);
chat_0931.lists.removeAll();
try?{
socket_0931.close();
}?catch?(IOException?er)?{
chat_0931.receiveMsg.append(“1-“?+?er.toString());
}
}?catch?(IOException?e)?{
chat_0931.receiveMsg.append(“2-“?+?e.toString());
}
}
public?void?messageSend(String?message)?{
out_0931.println(message.trim());
//out_0931.println(“\n“);
out_0931.flush();
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1132032??2010-04-18?16:33??李亞方實踐報告.doc
?????文件???????1968??2010-04-15?19:53??實驗五\client\Client.java
?????文件???????4535??2010-04-15?19:57??實驗五\client\ClientGUI.java
?????文件???????2028??2010-04-15?17:31??實驗五\client\ClientLogin.java
?????文件???????2919??2010-04-15?17:32??實驗五\server\Server.java
?????文件???????2472??2010-04-07?21:40??實驗五\server\ServerGUI.java
?????文件???????1444??2010-04-16?00:09??實驗五\server\ServerThread.java
?????目錄??????????0??2010-04-12?22:12??實驗五\client
?????目錄??????????0??2010-04-12?22:12??實驗五\server
?????目錄??????????0??2010-04-12?22:12??實驗五
-----------?---------??----------?-----??----
??????????????1147398????????????????????10
- 上一篇:一個完整的心電檢測系統文檔硬件,軟件說明和C源代碼
- 下一篇:卷積碼的譯碼的兩種算法
評論
共有 條評論