Java基於Tcp協定的socket編程實例。本站提示廣大學習愛好者:(Java基於Tcp協定的socket編程實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java基於Tcp協定的socket編程實例正文
本文實例講述了Java基於Tcp協定的socket編程辦法,分享給年夜家供年夜家參考。詳細剖析以下:
以下是一對一的通訊編程完成,後續會持續進修一個辦事器監聽多個客戶真個完成。
這裡用到的重要步調以下:
第一步:以特定端口(如4800)新建socket對象
第二步:以體系輸出裝備結構BufferedReader對象,該對象用於吸收體系鍵盤輸出的字符
第三步:以socket對象 獲得輸入流來結構PrintWriter
第四步:以socket對象獲得輸出流來結構響應的BufferedReader對象,該對象用於吸收server端發送過去的信息
我懂得到的封閉socket:先開的後封閉,socket最初封閉。
以下是客戶真個代碼完成:
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端口收回客戶要求
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由體系尺度輸出裝備結構BufferedReader對象
PrintWriter write=new PrintWriter(socket.getOutputStream());
//由Socket對象獲得輸入流,並結構PrintWriter對象
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象獲得輸出流,並結構響應的BufferedReader對象
String readline;
readline=br.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;
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...");
//創立一個ServerSocket在端口4800監聽客戶要求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//失足,打印失足信息
}
Socket socket=null;
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 BufferedReader(new InputStreamReader(System.in));
//由體系尺度輸出裝備結構BufferedReader對象
System.out.println("Client:"+in.readLine());
//在尺度輸入上打印從客戶端讀入的字符串
line=br.readLine();
//從尺度輸出讀入一字符串
while(!line.equals("end")){
//假如該字符串為 "bye",則停滯輪回
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);
}
}
}
願望本文所述對年夜家的Java法式設計有所贊助。