首頁  >  文章  >  Java  >  java Tcp協議socket程式設計學習

java Tcp協議socket程式設計學習

伊谢尔伦
伊谢尔伦原創
2016-11-26 09:33:401286瀏覽

我學習到的主要步驟

第一步:以特定端口(如4800)新建socket對象
第二步:以系統輸入設備構造BufferedReader對象,該對像用於接收系統鍵盤輸入的字符
第三步字符
第三步字符

第三步字符:以socket對象得到輸出流來建構PrintWriter

第四步:以socket對象得到輸入流來建構對應的BufferedReader對象,該對像用於接收server端發送過來的信息

我理解到的關閉socket:先開的後關閉,socket最後關閉。

以下是客戶端的程式碼實作:

package com.fan.socket;

import java.io.*;

import java.net.Socket;

public class SocketClient args) throws IOException{


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);/ /出錯,列印錯誤訊息
}
}

}

 

服務端程式碼實作:

 

package com.fan.socket; ServerSocket;

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);
}
}
}



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn