在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文搞明白TCP協議與UDP協議(下)

jf_78858299 ? 來源:Linux云計算網絡 ? 作者:Linux云計算網絡 ? 2023-05-18 17:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Server類(服務器端)

package cn.tkrnet.server;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        System.out.println("--服務器端已開啟--");

        //創建ServerSocket對象,這里的端口號必須與客戶端的端口號相同
        ServerSocket server = new ServerSocket(9000);

        //調用方法accept(),用來監聽客戶端發來的請求
        Socket socket = server.accept();

        //獲取輸入流對象
        InputStream is = socket.getInputStream();

        //讀取輸入流中的數據
        int b = 0;
        while ((b =is.read()) != -1){
            System.out.print((char)b);
        }
        //關閉流
        is.close();
        socket.close();
        server.close();
    }
}

提示:在運行程序時,一定要先運行服務器端的程序代碼,再運行客戶端的程序代碼。因為客戶端要向服務器發送請求,前提是服務器端要處于開啟狀態。

Server類(服務器端)運行結果:

--服務器端已開啟--

Client類(客戶端)運行結果:

信息已發送

Client類(客戶端)運行后,Server類(服務器端)收到信息,運行結果:

--服務器端已開啟--
Java is my friend !

實例分析:

服務器端啟動后,服務器端的accept()方法一直處于監聽狀態,直到客戶端連接了服務器,服務器端再從流中讀取客戶端發來的數據。

恕我直言,這是一個超級無敵簡單的單向通信實例。

六、UDP編程

UDP使用數據報進行數據傳輸,沒有客戶端與服務器端之分,只有發送方與接收方,兩者哪個先啟動都不會報錯,但是會出現數據丟包現象。發送的內容有字數限制,大小必須限制在64k以內。

發送方與接收方實現步驟:

前提:創建一個項目,在項目中創建兩個模塊(model),一個模塊用來放發送方相關代碼,一個模塊用來放接收方相關代碼。

目錄結構如下圖

圖片

發送方

1、創建DatagramSocket對象,可以指定應用程序的端口號,也可以不指定。

2、準備需要發送的數據

3、創建DatagramPacket對象,用來對發送的數據進行打包,需要指定發送內容、發送多少、發送到哪里和接收方的端口號四個參數。

4、調用DatagramSocket對象的send()方法發送數據。

5、記得關閉流。

接收方

1、創建DatagramSocket對象,指定接收方的端口號,這個必須指定。

2、創建一個byte類型數組,用來接收發送方發送過來的數據。

3、創建DatagramPacket對象,準備接收數據。

4、調用DatagramSocket對象的receive()方法用于接收數據。

5、使用String類的構造方法將byte類型的數組中的數據轉化成String類型并顯示。

6、記得關閉流。

實例

發送方發送信息,接收方接收信息,并顯示。

Sender類(發送方)

package cn.tkrnet.Sender;

import java.io.IOException;
import java.net.*;

public class Sender {
    public static void main(String[] args) throws IOException {

        //創建接受或發送的數據報套接字,并指定發送方的端口號為7770
        DatagramSocket ds = new DatagramSocket(7770);   //端口號也可以不指定
        System.out.println("---發送方---");

        //創建數據報對象,用來發送數據
        byte[] b = "Java is my friend !".getBytes();

        //8800為接收方的端口號,netAddress.getByName("localhost")是獲取主機的IP地址
        DatagramPacket dp = new DatagramPacket(b,b.length, InetAddress.getByName("localhost"),7788);

        ds.send(dp);    //發送數據報
        System.out.println("數據已發送");
        //關閉流
        ds.close();
    }
}

Receiver類(接收方)

package cn.tkrnet.receiver;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Receiver {
    public static void main(String[] args) throws IOException {
        System.out.println("---接收方---");

        //創建數據報套接字對象,指定的端口號要和發送方發送數據的端口號相同
        // (不是發送方的端口號7770,是發送方發送數據的端口號7788)
        DatagramSocket ds = new DatagramSocket(7788);

        //創建接收數據報的對象
        byte[] b = new byte[1024];
        DatagramPacket dp = new DatagramPacket(b,b.length);

        //接收數據
        ds.receive(dp);
        System.out.println(new String(b,0,dp.getLength()));
        //關閉流
        ds.close();
    }
}

提示:在運行程序時,先運行發送方程序,還是先運行接收方程序都不會報錯,但是有可能會出現數據丟包,一般我們都先運行接收方的程序代碼,再運行發送方的程序代碼。

Receiver類(接收方)運行結果:

---接收方---

Sender類(發送方)運行結果:

---發送方---
數據已發送

Sender類(發送方)運行后,Receiver類(接收方)接收到信息,運行結果:

---接收方---
    Java is my friend

實例分析:

只有接收方先啟動運行,才會存在端口號為7788的程序,發送方才能發送數據到指定端口號7788,接收方才能接收數據。

不瞞你說,這也是個超級無敵簡單的單向通信實例。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信協議
    +關注

    關注

    28

    文章

    1023

    瀏覽量

    41052
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1401

    瀏覽量

    80672
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34577
  • 端口
    +關注

    關注

    4

    文章

    1046

    瀏覽量

    32836
  • 網絡編程
    +關注

    關注

    0

    文章

    72

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    linxu網絡協議分析:IP協議TCP協議UDP協議

    本章節主要介紹linxu網絡模型、以及常用的網絡協議分析以太網協議、IP協議TCP協議UDP
    的頭像 發表于 10-28 16:44 ?4078次閱讀
    linxu網絡<b class='flag-5'>協議</b>分析:IP<b class='flag-5'>協議</b>、<b class='flag-5'>TCP</b><b class='flag-5'>協議</b>、<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>

    TCP協議UDP協議的區別有哪些

    無法實現;(3)TCP 協議有效載荷小于 UDP 協議(基于 MSS 計算),UDP 性能高于 TCP
    發表于 08-06 08:43

    TCPUDP協議簡析

    、前言TCPUDP協議TCP/IP協議的核心。TCP
    發表于 12-15 08:13

    通訊協議TCPUDP協議使用方法

    通訊協議TCPUDP協議UDP會把數據股腦兒地發送出去,并不會在意是否全部收到,適用于廣播類
    發表于 01-21 14:53

    LinuxUDP協議編程

    LinuxUDP協議編程 介紹UDP協議,并提供個適用于客戶端和服務器端的實例子程序。 
    發表于 10-16 22:22 ?4067次閱讀
    Linux<b class='flag-5'>下</b>的<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>編程

    (WiFi干貨)WiFi模塊的TCPUDP協議

    TCPUDP都是網絡通信協議,也就是通信時都要遵守的規則,雙方在同規則”交流”,才能理解或者為之服務.?
    的頭像 發表于 09-11 09:02 ?3.1w次閱讀

    tcpudp協議的異同

    UDP 協議 UDP 協議是無連接、不可靠的個傳輸層協議。下圖是
    的頭像 發表于 11-12 14:45 ?4425次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b><b class='flag-5'>協議</b>的異同

    TCP協議UDP協議的區別和相同點有哪些 看懂TCP協議UDP協議的優缺點

    首先咱們弄清楚,TCP協議和UCP協議TCP/IP協議的聯系,很多人犯糊涂了,直都是說
    的頭像 發表于 05-26 14:35 ?1w次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協議</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>的區別和相同點有哪些 <b class='flag-5'>一</b><b class='flag-5'>文</b>看懂<b class='flag-5'>TCP</b><b class='flag-5'>協議</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>的優缺點

    TCP協議UDP協議的區別

    TCP/IP協議中有兩個具有代表性的傳輸層協議,分別是TCP協議UDP
    的頭像 發表于 03-21 10:39 ?1366次閱讀

    明白TCP協議UDP協議(上)

    網絡編程有三個要素,分別是IP地址、端口號和通信協議,那本文主要講述的是TCPUDP這兩種通信協議,以及編程的實現。 首先,我們需要了解一下
    的頭像 發表于 05-18 17:17 ?854次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞</b><b class='flag-5'>明白</b><b class='flag-5'>TCP</b><b class='flag-5'>協議</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>(上)

    TCP協議UDP協議最核心的區別是什么?

    對于TCP協議UDP協議,大家應該都有所耳聞。TCP協議
    發表于 06-15 09:37 ?938次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協議</b>和<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>最核心的區別是什么?

    udp是什么協議 TCPUDP的區別

    TCP協議提供可靠的數據傳輸,UDP協議提供盡量高效的數據傳輸。TCP協議通過使用序列號、確認應
    的頭像 發表于 06-26 17:47 ?1.2w次閱讀

    什么是UDP協議?什么場景會去用這種協議呢?

    傳輸層除了TCP協議,還有個很重要的協議UDP協議。接下來看下UDP
    發表于 07-10 15:50 ?1698次閱讀
    什么是<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>?什么場景<b class='flag-5'>下</b>會去用這種<b class='flag-5'>協議</b>呢?

    TCP/IP協議進階課程:5、UDP協議

    電子發燒友網站提供《TCP/IP協議進階課程:5、UDP協議.pdf》資料免費下載
    發表于 07-31 11:48 ?0次下載
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協議</b>進階課程:5、<b class='flag-5'>UDP</b><b class='flag-5'>協議</b>

    TCP協議UDP協議的區別

    1. 連接性 TCP(傳輸控制協議) : 面向連接 :在數據傳輸之前,TCP需要建立個連接,這通過三次握手過程完成。 可靠性 :旦連接建
    的頭像 發表于 01-22 09:44 ?731次閱讀
    主站蜘蛛池模板: 午夜大片免费完整在线看 | 亚色视频在线 | 丁香婷婷在线观看 | 在线观看成人网 | 日本高清在线3344www | 中文字幕区 | 午夜湿 | www.九色.com| 69一级毛片| 97久久综合九色综合 | 操片 | 欧美日韩免费大片 | 男男h啪肉np文总受 男男h全肉耽污 | 五月婷婷久久综合 | 好爽毛片一区二区三区四 | 免免费看片 | 天天干天天玩 | 国产免费啪啪 | 五月桃花网婷婷亚洲综合 | 九色视频在线播放 | 亚洲福利视频网址 | 最新国产精品视频免费看 | 99久久无色码中文字幕 | 99热网址| 伊人狠狠丁香婷婷综合色 | 又黄又爽的成人免费网站 | 自偷自拍亚洲欧美清纯唯美 | 久久影院午夜伦手机不四虎卡 | 口述他拿舌头进去我下面好爽 | 美女黄色毛片免费看 | 韩国三级视频 | 亚洲国产精品久久精品怡红院 | 在线观看h视频 | 九九热在线视频观看 | 88影视在线观看污污 | 天天做天天爰夜夜爽 | 国产精品午夜免费观看网站 | 五月激情婷婷网 | 国产在线视频欧美亚综合 | 1024亚洲视频 | 桃花色综合影院 |