我學習到的主要步驟
第一步:以特定端口(如4800)新建socket對象
第二步:以系統輸入設備構造BufferedReader對象,該對像用於接收系統鍵盤輸入的字符
第三步字符
第三步字符
第四步:以socket對象得到輸入流來建構對應的BufferedReader對象,該對像用於接收server端發送過來的信息
我理解到的關閉socket:先開的後關閉,socket最後關閉。
以下是客戶端的程式碼實作:
package com.fan.socket;
import java.net.Socket;
try{
Socket socket=new Socket("127.0.0.1",4800);
System.out.println("client start ...");
/向本機的488發出客戶請求
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統標準輸入裝置構造BufferedReader物件
PrintWriter write=new PrintWriter(socket.getOutputStreamStream(PrintWriter write=new PrintWriter(socket.getOutputStreamStream(Print)/字);得到輸出流,並建構PrintWriter物件
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket物件得到輸入流,並建構對應的BufferedReader物件
String readline; .readLine(); //從系統標準輸入讀入一字串
while(!readline.equals("end")){
//若從標準輸入讀入的字串為"end"則停止循環
write.println(readline);
//將從系統標準輸入讀入的字串輸出到Server2
write.flush();
//刷新輸出流,使Server馬上收到該字串
System.out. println("Client:"+readline);
//在系統標準輸出上印出讀入的字串
System.out.println("Server:"+in.readLine());
//從Server讀入一個字串,並印到標準輸出上
readline=br.readLine(); //從系統標準輸入讀入一字串
} //繼續循環
write.close(); //關閉Socket輸出流
in.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
}catch(Exception e) {
System.out.println("can not listen to:"+e);/ /出錯,列印錯誤訊息
}
}
import java.net.Socket;
public class SocketService {
public static void main(String[] args) throws IOException{
SocketServiceService socketSocketServiceService;
public void oneServer(){
try{ServerSocket server=null;
try{
server=new ServerSocket(4800);
System.out.println("server start isis;建立一個ServerSocket在連接埠4800監聽客戶請求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯,印出錯誤訊息
}
Sockullet socket=nullullet ;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產生一個Socket對象,並繼續執行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯,印出錯誤訊息
}
String line;
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由
/由Socket物件得到輸入流,並建構對應的BufferedReader物件
PrintWriter writer=new PrintWriter(socket.getOutputStream());
//由Socket物件得到輸出流,並建構PrintWriter物件
BufferedReader br=new BStreamedReader( System.in));
//由系統標準輸入設備建構BufferedReader物件
System.out.println("Client:"+in.readLine());
//在標準輸出上列印從客戶端讀取的字串
line=br.readLine();
//從標準輸入讀入一字串
while(!line.equals("end")){
//如果字串為"end",則停止循環
writer.println(line);
//向客戶端輸出該字串
writer.flush();
//刷新輸出流,使Client馬上收到該字串
System.out.println("Server :"+line);
//在系統標準輸出上列印讀入的字串
System.out.println("Client:"+in.readLine());
//從Client讀入一個字串,並且印到標準輸出上
line=br.readLine();
//從系統標準輸入讀入一字串
} //繼續循環
writer.close(); //關閉Socket輸出流
in.close (); //關閉Socket輸入流
socket.close(); //關閉Socket
server.close(); //關閉ServerSocket
}catch(Exception e) {//出錯,列印出錯訊息
System.out .println("Error."+e);
}
}
}