最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

以下是一對一的通信編程實(shí)現(xiàn),后續(xù)會繼續(xù)學(xué)習(xí)一個(gè)服務(wù)器監(jiān)聽多個(gè)客戶端的實(shí)現(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)閉。

以下是客戶端的代碼實(shí)現(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 ...");
//向本機(jī)的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);//出錯(cuò),打印出錯(cuò)信息
}
}

}

服務(wù)端代碼實(shí)現(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)建一個(gè)ServerSocket在端口4800監(jiān)聽客戶請求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯(cuò),打印出錯(cuò)信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產(chǎn)生一個(gè)Socket對象,并繼續(xù)執(zhí)行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯(cuò),打印出錯(cuò)信息
}
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) {//出錯(cuò),打印出錯(cuò)信息
System.out.println("Error."+e);
}
}
}

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

相關(guān)文章

  • jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器

    jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器

    這篇文章主要介紹了jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot RestTemplate GET POST請求的實(shí)例講解

    SpringBoot RestTemplate GET POST請求的實(shí)例講解

    這篇文章主要介紹了SpringBoot RestTemplate GET POST請求的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java如何自定義類數(shù)組的創(chuàng)建和初始化

    Java如何自定義類數(shù)組的創(chuàng)建和初始化

    這篇文章主要介紹了Java如何自定義類數(shù)組的創(chuàng)建和初始化,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用Java快速將Web中表格轉(zhuǎn)換成Excel的方法

    使用Java快速將Web中表格轉(zhuǎn)換成Excel的方法

    在平時(shí)做系統(tǒng)項(xiàng)目時(shí),經(jīng)常會需要做導(dǎo)出功能,下面這篇文章主要給大家介紹了關(guān)于使用Java快速將Web中表格轉(zhuǎn)換成Excel的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于idea更新到2020.2.3無法創(chuàng)建web項(xiàng)目原因 library is not specified

    關(guān)于idea更新到2020.2.3無法創(chuàng)建web項(xiàng)目原因 library is not specified

    這篇文章主要介紹了關(guān)于idea更新到2020.2.3無法創(chuàng)建web項(xiàng)目原因 library is not specified,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java中可變長度參數(shù)代碼詳解

    Java中可變長度參數(shù)代碼詳解

    這篇文章主要介紹了Java中可變長度參數(shù)代碼詳解,涉及了實(shí)參個(gè)數(shù)可變的定義方法,數(shù)組包裹實(shí)參等幾個(gè)問題,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Spring Boot外部化配置實(shí)戰(zhàn)解析

    Spring Boot外部化配置實(shí)戰(zhàn)解析

    這篇文章主要介紹了Spring Boot外部化配置實(shí)戰(zhàn)解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • 使用ClassFinal實(shí)現(xiàn)SpringBoot項(xiàng)目jar包加密的操作指南

    使用ClassFinal實(shí)現(xiàn)SpringBoot項(xiàng)目jar包加密的操作指南

    在實(shí)際開發(fā)中,保護(hù)項(xiàng)目的安全性和保密性是至關(guān)重要的,針對于 Spring Boot 項(xiàng)目,我們需要將 JAR 包進(jìn)行加密從而有效地防止未經(jīng)授權(quán)的訪問和修改,本文將介紹如何使用ClassFinal在 Spring Boot 項(xiàng)目中實(shí)現(xiàn) JAR 包加密,需要的朋友可以參考下
    2024-06-06
  • Java實(shí)現(xiàn)模擬機(jī)器人對話的示例代碼

    Java實(shí)現(xiàn)模擬機(jī)器人對話的示例代碼

    本文主要介紹了Java實(shí)現(xiàn)模擬機(jī)器人對話的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 親手帶你解決Debug Fastjson的安全漏洞

    親手帶你解決Debug Fastjson的安全漏洞

    這篇文章主要介紹了親手帶你解決Debug Fastjson的安全漏洞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

韩城市| 巴东县| 布拖县| 大邑县| 江西省| 乐东| 托克托县| 普定县| 定结县| 芦山县| 汉阴县| 榆树市| 和静县| 镇坪县| 确山县| 通化县| 黑河市| 平安县| 汉寿县| 嘉兴市| 霍林郭勒市| 永泰县| 调兵山市| 闻喜县| 巴楚县| 乌鲁木齐县| 德兴市| 阳东县| 沭阳县| 搜索| 柳江县| 宜昌市| 灵寿县| 万安县| 阳城县| 察隅县| 新巴尔虎左旗| 双柏县| 延庆县| 象山县| 濮阳市|