国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java基于Tcp協議的socket編程實例

2019-11-26 15:19:57
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 安国市| 资阳市| 沙洋县| 沙洋县| 龙里县| 澄城县| 黄梅县| 疏附县| 靖西县| 凤台县| 确山县| 绍兴市| 琼海市| 恩平市| 合山市| 宝清县| 南华县| 邛崃市| 保德县| 绥德县| 宝应县| 麦盖提县| 苍溪县| 贵德县| 鄄城县| 彩票| 衡山县| 舞阳县| 义乌市| 新巴尔虎左旗| 濉溪县| 响水县| 兴文县| 海林市| 西吉县| 漳州市| 社旗县| 焦作市| 高密市| 新龙县|