導入Java . io . buffered reader;
導入Java . io . io exception;
導入Java . io . inputstream;
導入Java . io . inputstreamreader;
導入Java . io . output stream;
導入Java . io . printwriter;
導入Java . net . socket;
導入Java . net . unknownhostexception;
公共類EchoClient {
私有字符串host = " localhost
private int port = 5000
私有套接字socket = null
公共EchoClient()引發了UnknownHostException,IOException {
socket =新套接字(主機,端口);
}
公共靜態void main(String g[])拋出UnknownHostException,
IOException {
新EchoClient()。talk();
}
私有PrintWriter getWriter(套接字套接字)引發IOException {
output stream socket out = socket . get output stream();//首先從socket對象獲取輸出空間,也就是輸出流。
//然後將其傳遞給PrintWriter類。
返回新的PrintWriter(socketOut,true);//創建PrintWriter類,參數1:輸出流,
//參數2:布爾值,true表示每寫壹行,PrintWrinter緩存自動溢出,數據寫到目的地。
}
私有BufferedReader getReader(套接字套接字)引發IOException {
InputStream socket in = socket . getinputstream();//首先從socket對象獲取輸入流,然後將其傳遞給InputStreamReader類。
返回new buffered reader(new InputStreamReader(socket in));//創建BufferedReader類,參數是InputStreamReader的對象。
}
公共void talk() {
BufferedReader br
嘗試{
br = getReader(套接字);
PrintWriter pw = getWriter(socket);
buffered reader local reader = new buffered reader(
new InputStreamReader(system . in));//在控制臺中輸入
String msg = null
while((msg = local reader . readline())!= null) {
pw . println(" Client:"+msg);
system . out . println(br . readline());
if(msg . equals(" bye "){
打破;
}
}
} catch (IOException e) {
e . printstacktrace();
}最後{
嘗試{
socket . close();
} catch (IOException e) {
e . printstacktrace();
}
}
}
}
-
計算機網絡服務器
導入Java . io . buffered reader;
導入Java . io . io exception;
導入Java . io . inputstream;
導入Java . io . inputstreamreader;
導入Java . io . output stream;
導入Java . io . printwriter;
導入Java . net . server socket;
導入Java . net . socket;
公共類EchoServer {
private int port = 5000//端口
private server socket server soket = null;//創建服務器
公共EchoServer()引發IOException {
server soket = new server socket(port);//實例化服務器。註意:記得輸入端口號。
System.out.println("服務器啟動");
}
公共字符串回顯(字符串消息){
返回“echo:“+msg;
}
私有PrintWriter getWriter(套接字套接字)引發IOException {
output stream socket out = socket . get output stream();//首先從socket對象獲取輸出空間,也就是輸出流。
//然後將其傳遞給PrintWriter類。
返回新的PrintWriter(socketOut,true);//創建PrintWriter類,參數1:輸出流,
//參數2:布爾值,true表示每寫壹行,PrintWrinter緩存自動溢出,數據寫到目的地。
}
私有BufferedReader getReader(套接字套接字)引發IOException {
InputStream socket in = socket . getinputstream();//首先從socket對象獲取輸入流,然後將其傳遞給InputStreamReader類。
返回new buffered reader(new InputStreamReader(socket in));//創建BufferedReader類,參數是InputStreamReader的對象。
}
公共無效服務(){
while (true) {
Socket socket = null//創建客戶端
嘗試{
System.out.println("獲取連接前");
socket = serversoket . accept();//等待客戶連接,accept()會返回壹個socket對象,也就是客戶連接器。
System.out.println("獲得連接後");
System.out.println("接受新連接"
+socket . getine address()+":"+socket . getport());
buffered reader br = getReader(socket);//創建BufferedReader的對象並實例化它。
PrintWriter pw = getWriter(socket);//創建PrintWriter的對象並實例化它。
String msg = null
while ((msg = br.readLine())!= null) {//br.readLine(),這次只能讀取壹次。
system . out . println(msg);
If (msg.equals("bye")) {//如果是bye,那麽退出。
打破;
}
BufferedReader tempbr =新的BufferedReader(
new InputStreamReader(system . in));//控制臺中的輸出
string tempS = tempbr . readline();
If (tempS.equals("bye")) {//如果是bye,那麽退出。
打破;
}
pw . println(" Server:"+tempS);//將需要回復的信息寫入socket對象的輸出流。
}
} catch (IOException e) {
e . printstacktrace();
}最後{
如果(插座!= null) {
嘗試{
socket . close();//關閉客戶端
} catch (IOException e) {
e . printstacktrace();
}
}
}
}
}
公共靜態void main(String[] g)引發IOException {
新的EchoServer()。service();
}
}