中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java Tcp協(xié)議socket編程學習

2018-07-20    來源:編程學習網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

我學習到的主要步驟

第一步:以特定端口(如4800)新建socket對象
第二步:以系統(tǒng)輸入設備構(gòu)造BufferedReader對象,該對象用于接收系統(tǒng)鍵盤輸入的字符
第三步:以socket對象 得到輸出流來構(gòu)造PrintWriter
第四步:以socket對象得到輸入流來構(gòu)造相應的BufferedReader對象,該對象用于接收server端發(fā)送過來的信息

我理解到的關(guān)閉socket:先開的后關(guān)閉,socket最后關(guān)閉。

以下是客戶端的代碼實現(xiàn):

package com.fan.socket;

import java.io.*;
import java.net.Socket;

public class SocketClient {
public static void main(String[] args) throws IOException{

try{
Socket socket=new Socket("127.0.0.1",4800);
System.out.println("client start ...");
//向本機的4800端口發(fā)出客戶請求
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統(tǒng)標準輸入設備構(gòu)造BufferedReader對象
PrintWriter write=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,并構(gòu)造PrintWriter對象
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,并構(gòu)造相應的BufferedReader對象
String readline;
readline=br.readLine(); //從系統(tǒng)標準輸入讀入一字符串
while(!readline.equals("end")){
//若從標準輸入讀入的字符串為 "end"則停止循環(huán)
write.println(readline);
//將從系統(tǒng)標準輸入讀入的字符串輸出到Server2
write.flush();
//刷新輸出流,使Server馬上收到該字符串
System.out.println("Client:"+readline);
//在系統(tǒng)標準輸出上打印讀入的字符串
System.out.println("Server:"+in.readLine());
//從Server讀入一字符串,并打印到標準輸出上
readline=br.readLine(); //從系統(tǒng)標準輸入讀入一字符串
} //繼續(xù)循環(huán)
write.close(); //關(guān)閉Socket輸出流
in.close(); //關(guān)閉Socket輸入流 
socket.close(); //關(guān)閉Socket 
}catch(Exception e) {
System.out.println("can not listen to:"+e);//出錯,打印出錯信息
}
}

}

 

服務端代碼實現(xiàn):

 

package com.fan.socket;

 

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

 

public class SocketService {
public static void main(String[] args) throws IOException{
SocketService socketService = new SocketService();
socketService.oneServer();
}

public void oneServer(){
try{
ServerSocket server=null;
try{
server=new ServerSocket(4800);
System.out.println("server start is ok...");
//創(chuàng)建一個ServerSocket在端口4800監(jiān)聽客戶請求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯,打印出錯信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產(chǎn)生一個Socket對象,并繼續(xù)執(zhí)行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯,打印出錯信息
}
String line;
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,并構(gòu)造相應的BufferedReader對象
PrintWriter writer=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,并構(gòu)造PrintWriter對象
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統(tǒng)標準輸入設備構(gòu)造BufferedReader對象
System.out.println("Client:"+in.readLine());
//在標準輸出上打印從客戶端讀入的字符串
line=br.readLine();
//從標準輸入讀入一字符串
while(!line.equals("end")){
//如果該字符串為 "end",則停止循環(huán)
writer.println(line);
//向客戶端輸出該字符串
writer.flush();
//刷新輸出流,使Client馬上收到該字符串
System.out.println("Server:"+line);
//在系統(tǒng)標準輸出上打印讀入的字符串
System.out.println("Client:"+in.readLine());
//從Client讀入一字符串,并打印到標準輸出上
line=br.readLine();
//從系統(tǒng)標準輸入讀入一字符串
} //繼續(xù)循環(huán)
writer.close(); //關(guān)閉Socket輸出流
in.close(); //關(guān)閉Socket輸入流
socket.close(); //關(guān)閉Socket
server.close(); //關(guān)閉ServerSocket
}catch(Exception e) {//出錯,打印出錯信息
System.out.println("Error."+e);
}
}
}

標簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:聽說你要做網(wǎng)站?可你知道這些嗎

下一篇:如何開始編程語言?給初學者的幾個小貼士