欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基于Tcp協(xié)議的socket編程實例

 更新時間:2014年12月30日 10:57:01   投稿:shichen2014  
這篇文章主要介紹了Java基于Tcp協(xié)議的socket編程實例,較為詳細(xì)的分析了socket編程客戶端與服務(wù)器端的具體實現(xiàn)步驟與使用技巧,具有一定的參考借鑒價值,需要的朋友可以參考下

本文實例講述了Java基于Tcp協(xié)議的socket編程方法,分享給大家供大家參考。具體分析如下:

以下是一對一的通信編程實現(xiàn),后續(xù)會繼續(xù)學(xué)習(xí)一個服務(wù)器監(jiān)聽多個客戶端的實現(xiàn)。

這里用到的主要步驟如下:

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

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

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

復(fù)制代碼 代碼如下:
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)標(biāo)準(zhǔn)輸入設(shè)備構(gòu)造BufferedReader對象
PrintWriter write=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,并構(gòu)造PrintWriter對象
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,并構(gòu)造相應(yīng)的BufferedReader對象
String readline;
readline=br.readLine(); //從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
while(!readline.equals("end")){
//若從標(biāo)準(zhǔn)輸入讀入的字符串為 "end"則停止循環(huán)
write.println(readline);
//將從系統(tǒng)標(biāo)準(zhǔn)輸入讀入的字符串輸出到Server2
write.flush();
//刷新輸出流,使Server馬上收到該字符串
System.out.println("Client:"+readline);
//在系統(tǒng)標(biāo)準(zhǔn)輸出上打印讀入的字符串
System.out.println("Server:"+in.readLine());
//從Server讀入一字符串,并打印到標(biāo)準(zhǔn)輸出上
readline=br.readLine(); //從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
} //繼續(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);//出錯,打印出錯信息
}
}

}

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

復(fù)制代碼 代碼如下:
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)造相應(yīng)的BufferedReader對象
PrintWriter writer=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,并構(gòu)造PrintWriter對象
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統(tǒng)標(biāo)準(zhǔn)輸入設(shè)備構(gòu)造BufferedReader對象
System.out.println("Client:"+in.readLine());
//在標(biāo)準(zhǔn)輸出上打印從客戶端讀入的字符串
line=br.readLine();
//從標(biāo)準(zhǔn)輸入讀入一字符串
while(!line.equals("end")){
//如果該字符串為 "bye",則停止循環(huán)
writer.println(line);
//向客戶端輸出該字符串
writer.flush();
//刷新輸出流,使Client馬上收到該字符串
System.out.println("Server:"+line);
//在系統(tǒng)標(biāo)準(zhǔn)輸出上打印讀入的字符串
System.out.println("Client:"+in.readLine());
//從Client讀入一字符串,并打印到標(biāo)準(zhǔn)輸出上
line=br.readLine();
//從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
} //繼續(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);
}
}
}

希望本文所述對大家的Java程序設(shè)計有所幫助。

相關(guān)文章

  • java控制臺輸出版多人聊天室

    java控制臺輸出版多人聊天室

    這篇文章主要為大家詳細(xì)介紹了java控制臺輸出版多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • ASM源碼學(xué)習(xí)之ClassReader、ClassVisitor與ClassWriter詳解

    ASM源碼學(xué)習(xí)之ClassReader、ClassVisitor與ClassWriter詳解

    這篇文章主要給大家介紹了ASM源碼之ClassReader、ClassVisitor與ClassWriter的相關(guān)資料,文中介紹的非常相信,相信對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Java與WebUploader相結(jié)合實現(xiàn)文件上傳功能(實例代碼)

    Java與WebUploader相結(jié)合實現(xiàn)文件上傳功能(實例代碼)

    這篇文章主要介紹了Java結(jié)合WebUploader實現(xiàn)文件上傳功能,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • Java統(tǒng)計英文句子中出現(xiàn)次數(shù)最多的單詞并計算出現(xiàn)次數(shù)的方法

    Java統(tǒng)計英文句子中出現(xiàn)次數(shù)最多的單詞并計算出現(xiàn)次數(shù)的方法

    這篇文章主要介紹了Java統(tǒng)計英文句子中出現(xiàn)次數(shù)最多的單詞并計算出現(xiàn)次數(shù)的方法,涉及java針對英文句子的字符串遍歷、轉(zhuǎn)換、正則替換、計算等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • SpringBoot favicon Chrome設(shè)置問題解決方案

    SpringBoot favicon Chrome設(shè)置問題解決方案

    在本篇文章里小編給大家分享的是關(guān)于SpringBoot favicon Chrome設(shè)置問題實例內(nèi)容,小的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • 深度解析SpringBoot內(nèi)嵌Web容器

    深度解析SpringBoot內(nèi)嵌Web容器

    這篇文章主要給大家介紹SpringBoot的內(nèi)嵌Web容器,SpringBoot將Web容器進行了內(nèi)嵌,我們只需要將項目打成一個jar包,就可以運行了,大大省略了開發(fā)成本,那么SpringBoot是怎么實現(xiàn)的呢,我們今天就來詳細(xì)介紹
    2023-06-06
  • java圖片壓縮工具類

    java圖片壓縮工具類

    這篇文章主要為大家詳細(xì)介紹了java圖片壓縮工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JAVA代碼設(shè)置selector不同狀態(tài)下的背景顏色

    JAVA代碼設(shè)置selector不同狀態(tài)下的背景顏色

    這篇文章主要介紹了JAVA代碼設(shè)置selector不同狀態(tài)下的背景顏色,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • Java實現(xiàn)簡單連連看游戲

    Java實現(xiàn)簡單連連看游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡單連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java動態(tài)代理簡單介紹

    Java動態(tài)代理簡單介紹

    動態(tài)代理指的是,代理類和目標(biāo)類的關(guān)系在程序運行的時候確定的,客戶通過代理類來調(diào)用目標(biāo)對象的方法,是在程序運行時根據(jù)需要動態(tài)的創(chuàng)建目標(biāo)類的代理對象。本文將通過案例詳細(xì)講解一下Java動態(tài)代理的原理及實現(xiàn),需要的可以參考一下
    2022-08-08

最新評論