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

java socket 詳細介紹

 更新時間:2013年04月18日 15:41:56   作者:  
本篇文章小編為大家介紹,java socket 詳細介紹。需要的朋友參考下

//返回本地主機名稱及IP地址;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???

//通過計算機名稱獲取計算機相關信息;
InetAddress i = InetAddress.getByName("Livingstone-PC");

//通過域名獲取主機相關信息
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");

URL url = new URL("http://localhost:8080/demo.html");
url.getHost();

TCP:

Socket(客戶端):
在對象建立時,就可以去連接指定主機,因為TCP是面向連接的,所以在建立socket服務時,就要有服務端存在,并連接成功,連接通
后,在該通道進行數(shù)據(jù)傳輸;
// 創(chuàng)建客戶端的socket服務,指定目標主機和端口;
Socket s = new Socket("cj-PC", 10003);
// 為了發(fā)送數(shù)據(jù),應該獲取socket流中的輸出流;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("你好");
out.write("hello".getBytes());

// 接收回送消息
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));

s.close();// 流對象in封裝在socket中,自動關閉流對象;

ServerSocket(服務端):
建立服務端的socket服務,ServerSocket,并監(jiān)聽一個端口;
獲取連接過來的客戶端對象,通過對象的accept方法,沒有連接就會等待(阻塞式):
客戶端如果發(fā)送數(shù)據(jù)過來,服務端要使用對應的客戶端對象的讀取流獲取客戶端發(fā)過來的數(shù)據(jù);
ServerSocket ss = new ServerSocket(10003);

//ServerSocket(int port,int backlog);backlog為最大連接數(shù)目;
Socket s = ss.accept();
InputStream in = s.getInputStream();

byte[] buf = new byte[2014];
int len = in.read(buf);

String rec = new String(buf, 0, len);
System.out.println(rec);

// 回送消息
OutputStream out = s.getOutputStream();
out.write("收到".getBytes());

s.close();// 服務端會自動關閉客戶端;
(1)客戶端:
建立socket服務,指定要連接主機和端口;
獲取socket流中的輸出流,將數(shù)據(jù)寫到該流中,通過網(wǎng)絡發(fā)送給服務端;
獲取socket流中的輸入流,將服務端反饋的數(shù)據(jù)獲取,關閉客戶端資源;

UDP:

DatagramSocket:通過UDP傳輸方式,將一段文字數(shù)據(jù)發(fā)送出去;
Send:
// 創(chuàng)建udp服務,創(chuàng)建一個DatagramSocket對象并給定一個商品號;
DatagramSocket socket = new DatagramSocket(8888);

// 確定數(shù)據(jù),并封裝成數(shù)據(jù)包,DatagramPacket(需指定目的機器的端口號);
byte[] buf = "udp I'm coming".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("Machine-Name"), 10086);
// 發(fā)送;
socket.send(dp);
// 關閉;
socket.close();
Receive:
// 定義udpsocket服務。通常會監(jiān)聽一個端口,其實就是給這個接收網(wǎng)絡應用程序定義數(shù)字標識;
DatagramSocket socket = new DatagramSocket(10086);
while (true) { //目的是不斷監(jiān)聽
byte[] buf = new byte[1024];
// 定義數(shù)據(jù)包,用于存儲數(shù)據(jù);
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// 通過服務的receive方法將收到的數(shù)據(jù)存入數(shù)據(jù)包中;
socket.receive(dp);// 阻塞式方法,沒數(shù)據(jù)就卡死在此;
// 通過數(shù)據(jù)包的方法獲取其中的數(shù)據(jù);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
}

文件上傳:

Socket s = new Socket("Machine-Name", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// 停止發(fā)送數(shù)據(jù)
s.shutdownOutput();

ServerSocket ss = new ServerSocket(10005);//ss.accept()方法具有阻塞作用;
// 可為每一個accept()方法得到的Socket建立一個單獨的線程;

相關文章

  • JDK動態(tài)代理之WeakCache緩存的實現(xiàn)機制

    JDK動態(tài)代理之WeakCache緩存的實現(xiàn)機制

    這篇文章主要介紹了JDK動態(tài)代理之WeakCache緩存的實現(xiàn)機制
    2018-02-02
  • SpringBoot?替換?if?的參數(shù)校驗示例代碼

    SpringBoot?替換?if?的參數(shù)校驗示例代碼

    Spring?Validation是對hibernate?validation的二次封裝,用于支持spring?mvc參數(shù)自動校驗,接下來,我們以spring-boot項目為例,介紹Spring?Validation的使用,需要的朋友可以參考下
    2022-12-12
  • 在Java中實現(xiàn)線程安全的單例模式的常見方式

    在Java中實現(xiàn)線程安全的單例模式的常見方式

    單例模式是一種常用的軟件設計模式,它確保一個類只有一個實例,并提供一個全局訪問點,在多線程環(huán)境下,確保單例模式的線程安全性是非常重要的,因為多個線程可能會同時嘗試創(chuàng)建實例,導致實例不唯一的問題,本文介紹了在Java中實現(xiàn)線程安全的單例模式有幾種常見的方式
    2024-09-09
  • JAVA注解代碼詳解一篇就夠了

    JAVA注解代碼詳解一篇就夠了

    這篇文章主要介紹了Java注解詳細介紹,本文講解了Java注解是什么、Java注解基礎知識、Java注解類型、定義Java注解類型的注意事項等內容,需要的朋友可以參考下
    2021-07-07
  • MyBatis?Mapper映射器的具體用法

    MyBatis?Mapper映射器的具體用法

    映射器是MyBatis中最重要的文件,映射器由Java接口和XML文件共同組成,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • SpringCloud之Zuul網(wǎng)關原理及其配置講解

    SpringCloud之Zuul網(wǎng)關原理及其配置講解

    這篇文章主要介紹了SpringCloud之Zuul網(wǎng)關原理及其配置講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Jackson優(yōu)雅序列化Java枚舉類過程解析

    Jackson優(yōu)雅序列化Java枚舉類過程解析

    這篇文章主要介紹了Jackson優(yōu)雅序列化Java枚舉類過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • JDK8安裝與配置實踐超詳細指南

    JDK8安裝與配置實踐超詳細指南

    本文詳細介紹了在Windows?64位系統(tǒng)上安裝和配置JDK8的步驟,包括JDK8下載、環(huán)境變量設置及安裝驗證,同時提供了JDK8新特性如Lambda表達式、StreamAPI等的概覽,旨在幫助Java開發(fā)者有效利用JDK8新特性進行開發(fā),需要的朋友可以參考下
    2024-10-10
  • Java中List for循環(huán)的6種寫法總結(推薦)

    Java中List for循環(huán)的6種寫法總結(推薦)

    下面小編就為大家?guī)硪黄狫ava中List for循環(huán)的6種寫法總結(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • java使用Dijkstra算法實現(xiàn)單源最短路徑

    java使用Dijkstra算法實現(xiàn)單源最短路徑

    這篇文章主要為大家詳細介紹了java使用Dijkstra算法實現(xiàn)單源最短路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論

鹤庆县| 定日县| 三穗县| 图木舒克市| 屏东市| 沿河| 临猗县| 多伦县| 格尔木市| 那坡县| 房山区| 广东省| 洞头县| 高雄县| 密山市| 苏州市| 九江县| 柳江县| 隆回县| 应城市| 诏安县| 承德市| 白朗县| 贺州市| 莱芜市| 桂阳县| 靖宇县| 和田县| 嘉祥县| 德清县| 青铜峡市| 恩平市| 偏关县| 离岛区| 舟山市| 平阴县| 南部县| 辽源市| 上犹县| 岑巩县| 游戏|