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

Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)

 更新時間:2016年03月17日 13:48:49   作者:紫巖淵  
對于Socket通信簡述,服務(wù)端往Socket的輸出流里面寫東西,客戶端就可以通過Socket的輸入流讀取對應(yīng)的內(nèi)容,Socket與Socket之間是雙向連通的,所以客戶端也可以往對應(yīng)的Socket輸出流里面寫東西,然后服務(wù)端對應(yīng)的Socket的輸入流就可以讀出對應(yīng)的內(nèi)容

網(wǎng)絡(luò)應(yīng)用分為客戶端和服務(wù)端兩部分,而Socket類是負(fù)責(zé)處理客戶端通信的Java類。通過這個類可以連接到指定IP或域名的服務(wù)器上,并且可以和服務(wù)器互相發(fā)送和接受數(shù)據(jù)。

對于Socket通信簡述,服務(wù)端往Socket的輸出流里面寫東西,客戶端就可以通過Socket的輸入流讀取對應(yīng)的內(nèi)容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應(yīng)的Socket輸出流里面寫東西,然后服務(wù)端對應(yīng)的Socket的輸入流就可以讀出對應(yīng)的內(nèi)容。

例1:客戶端的簡略寫法(一)。

Socket client = null;
try{
client = new Socket(Ip,Port);
String msg="發(fā)送的數(shù)據(jù)內(nèi)容!";
//得到socket讀寫流,向服務(wù)端程序發(fā)送數(shù)據(jù) 
client.getOutputStream().write(msg.getBytes());
byte[] datas = new byte[2048];
//從服務(wù)端程序接收數(shù)據(jù)
client.getInputStream().read(datas);
System.out.println(new String(datas));
}catch(Exception e){
e.printStackTrace();
}finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
System.out.println("systemerr:" +e);
}
}
}

例2:客戶端簡略寫法(二)。

try{
client = new Socket();
SocketAddress socketAddress = new InetSocketAddress(Ip,Port);
client.connect(socketAddress, 3000);
String msg="訪問的服務(wù)器返回內(nèi)容!";
//得到socket讀寫流,向服務(wù)端程序發(fā)送數(shù)據(jù) 
client.getOutputStream().write(msg.getBytes());
byte[] datas = new byte[2048];
//從服務(wù)端程序接收數(shù)據(jù)
client.getInputStream().read(datas);
System.out.println(new String(datas));
}catch(Exception e){
e.printStackTrace();
}finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
System.out.println("systemerr:" +e);
}
}
}

例3:客戶端的完整寫法。

try { 
//1.建立客戶端socket連接,指定服務(wù)器位置及端口 
Socket socket =new Socket(Ip,Port); 
//2.得到socket讀寫流 
OutputStream os=socket.getOutputStream(); 
PrintWriter pw=new PrintWriter(os); 
//輸入流 
InputStream is=socket.getInputStream(); 
BufferedReader br=new BufferedReader(new InputStreamReader(is)); 
//3.利用流按照一定的操作,對socket進行讀寫操作 
String sendInfo="向服務(wù)器發(fā)送的數(shù)據(jù)信息!";
pw.write(sendInfo); 
pw.flush(); 
socket.shutdownOutput(); 
//接收服務(wù)器的相應(yīng) 
String replyInfo=null; 
while(!((replyInfo=br.readLine())==null)){ 
System.out.println("接收服務(wù)器的數(shù)據(jù)信息:"+replyInfo); 
} 
//4.關(guān)閉資源 
br.close(); 
is.close(); 
pw.close(); 
os.close(); 
socket.close(); 
} catch (UnknownHostException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
}

關(guān)于Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)的相關(guān)知識,小編就給大家介紹到這里,更多信息請登陸腳本之家網(wǎng)站了解更多內(nèi)容!

相關(guān)文章

  • SpringCloud中的Hystrix保護機制詳解

    SpringCloud中的Hystrix保護機制詳解

    這篇文章主要介紹了SpringCloud中的Hystrix保護機制詳解,Hystrix,英文意思是豪豬,全身是刺,看起來就不好惹,是一種保護機制,Hystrix也是Netflix公司的一款組件,需要的朋友可以參考下
    2023-12-12
  • Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式和Stream API,所以我們學(xué)習(xí)java8的第一課就是學(xué)習(xí)lambda表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java8學(xué)習(xí)之lambda的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 深入理解Java對象的序列化與反序列化的應(yīng)用

    深入理解Java對象的序列化與反序列化的應(yīng)用

    本篇文章是對Java中對象的序列化與反序列化進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Java 中的單例類(Singleton)應(yīng)用場景分析

    Java 中的單例類(Singleton)應(yīng)用場景分析

    單例類是一種設(shè)計模式,確保一個類只有一個實例,并提供一個全局訪問點,本文給大家介紹Java中的單例類(Singleton)應(yīng)用場景分析,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Mybatis-plus出現(xiàn)數(shù)據(jù)庫id很大或者為負(fù)數(shù)的解決

    Mybatis-plus出現(xiàn)數(shù)據(jù)庫id很大或者為負(fù)數(shù)的解決

    本文主要介紹了Mybatis-plus出現(xiàn)數(shù)據(jù)庫id很大或者為負(fù)數(shù)的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • SpringBoot開發(fā)中十大常見陷阱深度解析與避坑指南

    SpringBoot開發(fā)中十大常見陷阱深度解析與避坑指南

    在Spring?Boot的開發(fā)過程中,即使是經(jīng)驗豐富的開發(fā)者也難免會遇到各種棘手的問題,本文將針對Spring?Boot開發(fā)中十大常見的“坑”進行深度解析,結(jié)合具體的代碼示例,提供詳細(xì)的解決方案,幫助開發(fā)者們有效避坑
    2025-06-06
  • Java類初始化順序詳解

    Java類初始化順序詳解

    這篇文章主要介紹了Java類初始化順序詳解,java語言在使用過程中最先開始就是初始化,在工作中如果遇到什么問題需?要定位往往到最后也可能是初始化的問題,因此掌握初始化的順序很重要,需要的朋友可以參考下
    2023-08-08
  • 詳解@Autowired(required=false)注入注意的問題

    詳解@Autowired(required=false)注入注意的問題

    這篇文章主要介紹了@Autowired(required=false)注入注意的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 解析HashMap中的put方法執(zhí)行流程

    解析HashMap中的put方法執(zhí)行流程

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它在日常開發(fā)中有著非常多的應(yīng)用場景,也是面試中的高頻考點,本篇文章就來分析一下HashMap集合中的put方法
    2021-12-12
  • Java實現(xiàn)堆排序(大根堆)的示例代碼

    Java實現(xiàn)堆排序(大根堆)的示例代碼

    這篇文章主要介紹了Java實現(xiàn)堆排序(大根堆)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

双流县| 潍坊市| 怀化市| 阳泉市| 托里县| 大洼县| 浠水县| 柘荣县| 广昌县| 禹州市| 峨山| 翁牛特旗| 黄石市| 隆德县| 湘西| 曲麻莱县| 肥乡县| 乾安县| 大名县| 咸阳市| 福泉市| 思茅市| 达孜县| 扶绥县| 荣昌县| 綦江县| 怀柔区| 芮城县| 阿克| 黔西| 济宁市| 富蕴县| 凤阳县| 买车| 资中县| 兰考县| 辽中县| 丰台区| 新宾| 四会市| 寻甸|