編寫一個(gè)使用 TCP/IP 協(xié)議建立線程通信的 Java 應(yīng)用程序,要求服務(wù)器端與 客戶端均具
編寫一個(gè)使用 TCP/IP 協(xié)議建立線程通信的 Java?應(yīng)用程序,要求服務(wù)器端與?客戶端均具有發(fā)送與接受信息的功能, 由服務(wù)器端向客戶端發(fā)送的信息是“東軟?信息學(xué)院”,客戶端接受該信息后將其修改為“大連東軟信息大學(xué)”,然后再發(fā)送?給服務(wù)器端。
提示:
1)編寫客戶端和服務(wù)器兩個(gè)類都要實(shí)現(xiàn) Runnable 接口,所有操作在 run()方法中?實(shí)現(xiàn)。
2)要?jiǎng)?chuàng)建客戶端和服務(wù)器兩個(gè)線程,輸入輸出時(shí)分別調(diào)用 getInputStream()和?getOutputStream()。
package?suannaigongyuan
;
?
import java.io.*;
import java.net.*;
import?java.util.*;
?
public?class?q3095563063
?{
public static?void?main(String[] args) throws?IOException?{
System.out.println("Server?starting...\n");
// ?創(chuàng)建一個(gè)端口號(hào)為 8888 的 ServerSocket
ServerSocket server = new ServerSocket(8888);
while?(true) {
// ?監(jiān)聽客戶端的連接請(qǐng)求, 當(dāng)建立連接時(shí), 返回一個(gè)代表此連接的?Socket 對(duì)象
Socket s = server.accept();
System.out.println("Accepting Connection...\n");
new ServerThread(s).start();// ?啟動(dòng)一個(gè)處理此連接的線程
}// while?結(jié)束
}// main?方法結(jié)束
}
?
class ServerThread extends Thread?{
private?Socket?s;
?
ServerThread(Socket?s) {
this.s = s;
}
?
public?void?run() {
BufferedReader?br?=?null;
PrintWriter?pw = null;
try?{
InputStreamReader??????????????????????????isr ??????????????????????????= ?????????????????????????new
InputStreamReader(s.getInputStream());
br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(), true);
String?name?= br.readLine(); // ?從客戶端讀入一行數(shù)據(jù)
System.out.println("用戶" + name?+ "訪問(wèn)服務(wù)囂");
pw.println("大連東軟信息大學(xué)”);
} // ?向客戶端輸出歡迎信息
catch (IOException?e) {
System.out.println(e.toString());
} finally {
System.out.println("Closing?Connection...\n");
}
//??關(guān)閉連接
try?{
br.close();
pw.close();
s.close();
} catch?(IOException?e)?{
}
}// run 方法結(jié)束
}
import java.io.*;
import java.net.*;
?
public?class?SSClient?{
// ?定義從鍵盤讀入字符串的方法
static?String readString() {
BufferedReader?br?=?new BufferedReader(
new?InputStreamReader(System.in), 1);
String?string = "";
try?{
string?= br.readLine();
} catch?(IOException?ex) {
System.out.println(ex);
}
return?string;
}
?
public static void main(String[] args) {
String?host?= "127.0.0. 1";
BufferedReader?br?=?null;
PrintWriter?pw = null;
Socket?s?= null;
try?{
s?= new?Socket(host, 8888); // ?創(chuàng)立一個(gè)端口號(hào)為 8888 的 Socket
InputStreamReader??????????????????????????isr ??????????????????????????= ?????????????????????????new InputStreamReader(s.getInputStream());
br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(), true);
System.out.println("請(qǐng)輸入您的姓名: "); // ?輸入姓名
String?name?= readString();
pw.println(name); // ?向服務(wù)器發(fā)送數(shù)據(jù)
// ?向控制臺(tái)輸出服務(wù)器端輸送過(guò)來(lái)的歡迎信息
System.out.println(br.readLine());
}// try?結(jié)束
catch (IOException?e) {
System.out.println(e.toString());
} finally?{ // ?關(guān)閉連接
try?{
br.close();
pw.close();
s.close();
} catch?(IOException?e)?{
}
}
}
}