日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何找到連接到服務(wù)器的客戶(hù)端計(jì)算機(jī)的IP地址

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-08 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在本文中,我們來(lái)學(xué)習(xí)下如何找到連接到服務(wù)器的客戶(hù)端計(jì)算機(jī)的IP地址。我們將創(chuàng)建一個(gè)簡(jiǎn)單的客戶(hù)端-服務(wù)器場(chǎng)景,讓我們探索用于TCP/IP通信java.net API。

背景

Java應(yīng)用程序使用套接字在互聯(lián)網(wǎng)上進(jìn)行通信和發(fā)送數(shù)據(jù)。Java為客戶(hù)端應(yīng)用程序提供了java.net.Socket類(lèi)。

java.net.ServerSocket類(lèi)用于TCP/IP的服務(wù)器端套接字實(shí)現(xiàn)。我們平時(shí)只關(guān)注TCP/IP的應(yīng)用層面。

使用示例

讓我們假設(shè)我們的系統(tǒng)上有一個(gè)應(yīng)用服務(wù)器在運(yùn)行。這個(gè)服務(wù)器向客戶(hù)發(fā)送問(wèn)候信息。在這種情況下,服務(wù)器使用一個(gè)TCP套接字進(jìn)行通信。

該應(yīng)用服務(wù)器被綁定到一個(gè)特定的TCP端口。它的套接字地址是該端口和本地網(wǎng)絡(luò)接口的IP地址的組合。由于這個(gè)原因,客戶(hù)應(yīng)該使用這個(gè)特定的套接字地址來(lái)連接服務(wù)器。

應(yīng)用例子

現(xiàn)在我們已經(jīng)定義了我們的用例,讓我們開(kāi)始構(gòu)建服務(wù)器。

應(yīng)用服務(wù)器

首先,我們需要實(shí)例化一個(gè)ServerSocket,用于監(jiān)聽(tīng)進(jìn)入的連接請(qǐng)求。ServerSocket類(lèi)的構(gòu)造函數(shù)需要一個(gè)端口號(hào)作為參數(shù)。

public class ApplicationServer {

    private ServerSocket serverSocket;
    private Socket connectedSocket;
  
    public void startServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
        connectedSocket = serverSocket.accept();
        //...

獲取客戶(hù)端的IP地址

現(xiàn)在我們已經(jīng)為進(jìn)入的客戶(hù)端建立了Socket,讓我們看看如何獲得客戶(hù)端的IP地址。Socket實(shí)例包含了遠(yuǎn)程客戶(hù)端的套接字地址。我們可以使用getRemoteSocketAddress方法來(lái)檢查這個(gè)。

ThegetRemoteSocketAddress方法返回一個(gè)類(lèi)型為SocketAddress的對(duì)象。這是一個(gè)抽象的Java類(lèi)。在這個(gè)例子中,我們知道它是一個(gè)TCP/IP連接,所以我們可以把它轉(zhuǎn)換為InetSocketAddress

InetSocketAddress socketAddress = (InetSocketAddress) connectedSocket.getRemoteSocketAddress();

正如我們已經(jīng)看到的,一個(gè)套接字地址是一個(gè)IP地址和端口號(hào)的組合。我們可以使用getAddress來(lái)獲得IP地址。這返回一個(gè)InetAddress對(duì)象。然而,我們也可以使用getHostAddress來(lái)獲得IP地址的字符串表示。

String clientIpAddress = socketAddress.getAddress()
    .getHostAddress();

向客戶(hù)端發(fā)送消息

現(xiàn)在,服務(wù)器和客戶(hù)端可以交換問(wèn)候信息。

String msg = in.readLine();
System.out.println("Message received from the client : " + msg);
PrintWriter out = new PrintWriter(connectedSocket.getOutputStream(), true);
out.println("Hello Client !!");

測(cè)試應(yīng)用程序

現(xiàn)在讓我們建立一個(gè)客戶(hù)端應(yīng)用程序來(lái)測(cè)試我們的代碼。這個(gè)客戶(hù)端將在一個(gè)單獨(dú)的計(jì)算機(jī)上運(yùn)行并連接到我們的服務(wù)器。

建立一個(gè)客戶(hù)端應(yīng)用程序

首先,我們需要使用IP地址和端口號(hào)與服務(wù)建立一個(gè)Socket連接。

public class ApplicationClient {
    public void connect(String ip, int port) throws IOException {
        clientSocket = new Socket(ip, port);
    }
}

與服務(wù)器應(yīng)用程序類(lèi)似,我們將使用BufferedReaderPrintWriter來(lái)從套接字中讀取和寫(xiě)入。為了向服務(wù)器發(fā)送消息,讓我們創(chuàng)建一個(gè)方法來(lái)向連接的套接字寫(xiě)入。

public void sendGreetings(String msg) throws IOException {
    out.println(msg);
    String reply = in.readLine();
    System.out.println("Reply received from the server :" + reply);
}

運(yùn)行應(yīng)用程序

接下來(lái),讓我們運(yùn)行客戶(hù)端應(yīng)用程序,為它選擇一個(gè)不常用的端口

之后,我們需要從另一臺(tái)電腦上啟動(dòng)客戶(hù)端應(yīng)用程序。在這個(gè)例子中,我們假設(shè)服務(wù)器機(jī)器的IP地址是192.168.0.100,端口5000是不常用的,不會(huì)影響其他的服務(wù)。

java -cp com.javanorth.clientaddress.ApplicationClient 192.168.0.100 5000 Hello

這里,我們假設(shè)客戶(hù)機(jī)和服務(wù)器在同一個(gè)網(wǎng)絡(luò)上。在客戶(hù)端與服務(wù)器建立成功的連接后,客戶(hù)端的IP地址將被打印在服務(wù)器控制臺(tái)。

例如,如果客戶(hù)端的IP地址是192.168.0.102,我們應(yīng)該能在控制臺(tái)中看到它。

IP address of the connected client: 192.168.0.102

在后臺(tái)發(fā)生了什么?

一般來(lái)說(shuō),當(dāng)應(yīng)用服務(wù)器被啟動(dòng)時(shí),ServerSocket使用給定的端口號(hào)和通配符IP地址實(shí)例化一個(gè)套接字對(duì)象。之后,它將其狀態(tài)改為監(jiān)聽(tīng),以接收連接請(qǐng)求。然后,當(dāng)客戶(hù)端發(fā)送一個(gè)連接請(qǐng)求時(shí),ServerSocket通過(guò)調(diào)用accept方法實(shí)例化一個(gè)新的套接字。

新創(chuàng)建的套接字實(shí)例包含服務(wù)器的IP地址和端口,以及遠(yuǎn)程客戶(hù)端。對(duì)于服務(wù)器的IP地址,ServerSocket類(lèi)使用本地網(wǎng)絡(luò)接口的IP地址,它通過(guò)該接口收到傳入的請(qǐng)求。然后,為了獲得遠(yuǎn)程客戶(hù)端的IP地址,它對(duì)收到的TCP數(shù)據(jù)包的IP頭進(jìn)行解碼并使用源地址。

總結(jié)

在這篇文章中,我們定義了一個(gè)客戶(hù)機(jī)-服務(wù)器用例,并使用Java套接字編程來(lái)查找連接到服務(wù)器的客戶(hù)機(jī)的IP地址。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7841

    瀏覽量

    93494
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10371

    瀏覽量

    91773
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3012

    瀏覽量

    116874
  • ip地址
    +關(guān)注

    關(guān)注

    0

    文章

    309

    瀏覽量

    19020
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3346

    瀏覽量

    60428
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux網(wǎng)絡(luò)編程-TCP客戶(hù)端如何獲取要連接服務(wù)端IP?

    本篇介紹了在TCP通信中,客戶(hù)端通過(guò)UDP廣播,實(shí)現(xiàn)自動(dòng)獲取服務(wù)端IP地址,并進(jìn)行TCP連接的具體方法,并通過(guò)代碼實(shí)現(xiàn),來(lái)測(cè)試此方案是實(shí)際
    的頭像 發(fā)表于 09-27 08:56 ?7601次閱讀
    Linux網(wǎng)絡(luò)編程-TCP<b class='flag-5'>客戶(hù)端</b>如何獲取要<b class='flag-5'>連接</b>的<b class='flag-5'>服務(wù)端</b><b class='flag-5'>IP</b>?

    關(guān)于labview服務(wù)器客戶(hù)端程序移植到另一臺(tái)電腦的問(wèn)題

    本帖最后由 hunterlew 于 2015-3-9 21:54 編輯 各位路過(guò)大神,我有個(gè)這樣的疑問(wèn):今天我在計(jì)算機(jī)A上同時(shí)寫(xiě)了服務(wù)器客戶(hù)端程序(共享變量的方法),測(cè)試正常后把服務(wù)器
    發(fā)表于 02-08 18:14

    Intel Unite:無(wú)法將客戶(hù)端連接到Unite服務(wù)器

    我無(wú)法將客戶(hù)端連接到Intel unite服務(wù)器。我繞過(guò)了證書(shū)檢查和安裝服務(wù)器,服務(wù)器正在運(yùn)行并生成PIN。但是,當(dāng)我將
    發(fā)表于 11-09 11:20

    為什么我用labview編寫(xiě)的服務(wù)器只可以連接本機(jī)的客戶(hù)端

    為什么我用labview編寫(xiě)的服務(wù)器只可以連接本機(jī)的客戶(hù)端,創(chuàng)建TCP偵聽(tīng)的端口明明和別的計(jì)算機(jī)客戶(hù)端端口一樣可就是連不上
    發(fā)表于 03-11 20:46

    PIC24+ENC28J60同時(shí)客戶(hù)端服務(wù)器

    )工作,另一個(gè)模塊將作為客戶(hù)端連接到這個(gè)enc_IP&Port2。任何人都可以幫助我實(shí)現(xiàn)這個(gè)設(shè)置以充當(dāng)服務(wù)器來(lái)監(jiān)聽(tīng)連接和操作&作為
    發(fā)表于 03-26 11:18

    DHCP客戶(hù)端如何將主機(jī)名發(fā)送到服務(wù)器?

    有沒(méi)有人知道,如果DHCP客戶(hù)端和諧,可以將設(shè)備的主機(jī)名返回DNS服務(wù)器。我很感激服務(wù)器在許多情況下把主機(jī)名發(fā)送給客戶(hù)端。應(yīng)用程序是當(dāng)你第一次將設(shè)備插入網(wǎng)絡(luò)并從DHCP獲得
    發(fā)表于 05-01 06:44

    求助:labview 關(guān)于TCP通訊,如何讓客戶(hù)端以指定的IP地址連接服務(wù)器

    `計(jì)算機(jī)上有2個(gè)以上的IP地址,用LABVIEW編寫(xiě)TCP通訊 客戶(hù)端程序時(shí),怎么給客戶(hù)端指定一個(gè)IP
    發(fā)表于 03-16 16:47

    如何將ESP8266與Windows計(jì)算機(jī)上運(yùn)行的tcp套接字服務(wù)器程序連接?

    我正在嘗試將 ESP8266 與在我的 Windows 計(jì)算機(jī)上運(yùn)行的 tcp 套接字服務(wù)器程序連接,我開(kāi)發(fā)了一個(gè) C# 應(yīng)用程序運(yùn)行并列出到 IP 172.16.1.85 端口 65
    發(fā)表于 02-23 07:09

    如何創(chuàng)建客戶(hù)端連接到服務(wù)器的網(wǎng)狀網(wǎng)絡(luò)?

    的問(wèn)題是:如何創(chuàng)建客戶(hù)端連接到服務(wù)器的網(wǎng)狀網(wǎng)絡(luò)(或者服務(wù)器將多次提供與網(wǎng)狀的連接)有任何想法嗎?我錯(cuò)過(guò)了什么?是否有應(yīng)該唯一的
    發(fā)表于 03-02 07:54

    計(jì)算機(jī)客戶(hù)端服務(wù)器

    計(jì)算機(jī)客戶(hù)端服務(wù)器 一般說(shuō)來(lái),互聯(lián)網(wǎng)上的所有計(jì)算機(jī)可以分成兩種類(lèi)型:服務(wù)器客戶(hù)端。向其他
    發(fā)表于 08-05 08:57 ?2062次閱讀

    客戶(hù)端服務(wù)器和網(wǎng)絡(luò)技術(shù)

    基于服務(wù)器計(jì)算代表著一種應(yīng)用程序部署方法。 對(duì)以下基于服務(wù)器計(jì)算環(huán)境而言,瘦客戶(hù)端是理想的客戶(hù)端
    發(fā)表于 07-02 16:46 ?17次下載
    瘦<b class='flag-5'>客戶(hù)端</b>的<b class='flag-5'>服務(wù)器</b>和網(wǎng)絡(luò)技術(shù)

    根據(jù)客戶(hù)端IP地址獲取計(jì)算機(jī)名_Delphi教程

    Delphi教程根據(jù)客戶(hù)端IP地址獲取計(jì)算機(jī)名,很好的Delphi學(xué)習(xí)資料。
    發(fā)表于 03-16 14:54 ?10次下載

    TCP通信服務(wù)器端客戶(hù)端同機(jī)互傳的簡(jiǎn)單示例程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是TCP通信服務(wù)器端客戶(hù)端同機(jī)互傳的簡(jiǎn)單示例程序免費(fèi)下載初學(xué)者學(xué)習(xí)。本例子是本計(jì)算機(jī)labview程序之間的通信,如果要想實(shí)現(xiàn)計(jì)算機(jī)
    發(fā)表于 10-25 08:00 ?10次下載
    TCP通信<b class='flag-5'>服務(wù)器端</b>和<b class='flag-5'>客戶(hù)端</b>同機(jī)互傳的簡(jiǎn)單示例程序免費(fèi)下載

    STM32+LWIP服務(wù)器實(shí)現(xiàn)多客戶(hù)端連接

    用過(guò)正點(diǎn)原子LWIP服務(wù)器例程開(kāi)發(fā)的朋友可能知道,例程的設(shè)計(jì)是只支持一個(gè)客戶(hù)端連接的,但實(shí)際應(yīng)用中往往需要用到多客戶(hù)端連接。下面是在正點(diǎn)原子
    發(fā)表于 12-23 19:59 ?65次下載
    STM32+LWIP<b class='flag-5'>服務(wù)器</b>實(shí)現(xiàn)多<b class='flag-5'>客戶(hù)端</b><b class='flag-5'>連接</b>

    數(shù)據(jù)是怎么樣保證準(zhǔn)確的從客戶(hù)端發(fā)送到服務(wù)器端

    你有想過(guò)嗎,在計(jì)算機(jī)網(wǎng)絡(luò)當(dāng)中,數(shù)據(jù)是怎么樣保證準(zhǔn)確的從客戶(hù)端發(fā)送到服務(wù)器端的?中間涉及到了哪些理論?
    的頭像 發(fā)表于 07-01 10:09 ?3194次閱讀
    乡城县| 满洲里市| 鄯善县| 佛坪县| 寿光市| 伊通| 来凤县| 南通市| 深州市| 兖州市| 临夏县| 汤原县| 西平县| 赤水市| 丽江市| 忻城县| 松阳县| 将乐县| 舒兰市| 肇庆市| 韩城市| 黔西| 霍州市| 呼图壁县| 安远县| 历史| 金华市| 高尔夫| 宝坻区| 阜平县| 布拖县| 东乌珠穆沁旗| 西安市| 安庆市| 海盐县| 孟津县| 诸暨市| 德清县| 临沂市| 泊头市| 赣榆县|