一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

jf_78858299 ? 來(lái)源:Linux云計(jì)算網(wǎng)絡(luò) ? 作者:Linux云計(jì)算網(wǎng)絡(luò) ? 2023-05-18 17:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Server類(lèi)(服務(wù)器端)

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("--服務(wù)器端已開(kāi)啟--");

        //創(chuàng)建ServerSocket對(duì)象,這里的端口號(hào)必須與客戶(hù)端的端口號(hào)相同
        ServerSocket server = new ServerSocket(9000);

        //調(diào)用方法accept(),用來(lái)監(jiān)聽(tīng)客戶(hù)端發(fā)來(lái)的請(qǐng)求
        Socket socket = server.accept();

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

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

提示:在運(yùn)行程序時(shí),一定要先運(yùn)行服務(wù)器端的程序代碼,再運(yùn)行客戶(hù)端的程序代碼。因?yàn)榭蛻?hù)端要向服務(wù)器發(fā)送請(qǐng)求,前提是服務(wù)器端要處于開(kāi)啟狀態(tài)。

Server類(lèi)(服務(wù)器端)運(yùn)行結(jié)果:

--服務(wù)器端已開(kāi)啟--

Client類(lèi)(客戶(hù)端)運(yùn)行結(jié)果:

信息已發(fā)送

Client類(lèi)(客戶(hù)端)運(yùn)行后,Server類(lèi)(服務(wù)器端)收到信息,運(yùn)行結(jié)果:

--服務(wù)器端已開(kāi)啟--
Java is my friend !

實(shí)例分析:

服務(wù)器端啟動(dòng)后,服務(wù)器端的accept()方法一直處于監(jiān)聽(tīng)狀態(tài),直到客戶(hù)端連接了服務(wù)器,服務(wù)器端再?gòu)牧髦凶x取客戶(hù)端發(fā)來(lái)的數(shù)據(jù)。

恕我直言,這是一個(gè)超級(jí)無(wú)敵簡(jiǎn)單的單向通信實(shí)例。

六、UDP編程

UDP使用數(shù)據(jù)報(bào)進(jìn)行數(shù)據(jù)傳輸,沒(méi)有客戶(hù)端與服務(wù)器端之分,只有發(fā)送方與接收方,兩者哪個(gè)先啟動(dòng)都不會(huì)報(bào)錯(cuò),但是會(huì)出現(xiàn)數(shù)據(jù)丟包現(xiàn)象。發(fā)送的內(nèi)容有字?jǐn)?shù)限制,大小必須限制在64k以?xún)?nèi)。

發(fā)送方與接收方實(shí)現(xiàn)步驟:

前提:創(chuàng)建一個(gè)項(xiàng)目,在項(xiàng)目中創(chuàng)建兩個(gè)模塊(model),一個(gè)模塊用來(lái)放發(fā)送方相關(guān)代碼,一個(gè)模塊用來(lái)放接收方相關(guān)代碼。

目錄結(jié)構(gòu)如下圖

圖片

發(fā)送方

1、創(chuàng)建DatagramSocket對(duì)象,可以指定應(yīng)用程序的端口號(hào),也可以不指定。

2、準(zhǔn)備需要發(fā)送的數(shù)據(jù)

3、創(chuàng)建DatagramPacket對(duì)象,用來(lái)對(duì)發(fā)送的數(shù)據(jù)進(jìn)行打包,需要指定發(fā)送內(nèi)容、發(fā)送多少、發(fā)送到哪里和接收方的端口號(hào)四個(gè)參數(shù)。

4、調(diào)用DatagramSocket對(duì)象的send()方法發(fā)送數(shù)據(jù)。

5、記得關(guān)閉流。

接收方

1、創(chuàng)建DatagramSocket對(duì)象,指定接收方的端口號(hào),這個(gè)必須指定。

2、創(chuàng)建一個(gè)byte類(lèi)型數(shù)組,用來(lái)接收發(fā)送方發(fā)送過(guò)來(lái)的數(shù)據(jù)。

3、創(chuàng)建DatagramPacket對(duì)象,準(zhǔn)備接收數(shù)據(jù)。

4、調(diào)用DatagramSocket對(duì)象的receive()方法用于接收數(shù)據(jù)。

5、使用String類(lèi)的構(gòu)造方法將byte類(lèi)型的數(shù)組中的數(shù)據(jù)轉(zhuǎn)化成String類(lèi)型并顯示。

6、記得關(guān)閉流。

實(shí)例

發(fā)送方發(fā)送信息,接收方接收信息,并顯示。

Sender類(lèi)(發(fā)送方)

package cn.tkrnet.Sender;

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

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

        //創(chuàng)建接受或發(fā)送的數(shù)據(jù)報(bào)套接字,并指定發(fā)送方的端口號(hào)為7770
        DatagramSocket ds = new DatagramSocket(7770);   //端口號(hào)也可以不指定
        System.out.println("---發(fā)送方---");

        //創(chuàng)建數(shù)據(jù)報(bào)對(duì)象,用來(lái)發(fā)送數(shù)據(jù)
        byte[] b = "Java is my friend !".getBytes();

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

        ds.send(dp);    //發(fā)送數(shù)據(jù)報(bào)
        System.out.println("數(shù)據(jù)已發(fā)送");
        //關(guān)閉流
        ds.close();
    }
}

Receiver類(lèi)(接收方)

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("---接收方---");

        //創(chuàng)建數(shù)據(jù)報(bào)套接字對(duì)象,指定的端口號(hào)要和發(fā)送方發(fā)送數(shù)據(jù)的端口號(hào)相同
        // (不是發(fā)送方的端口號(hào)7770,是發(fā)送方發(fā)送數(shù)據(jù)的端口號(hào)7788)
        DatagramSocket ds = new DatagramSocket(7788);

        //創(chuàng)建接收數(shù)據(jù)報(bào)的對(duì)象
        byte[] b = new byte[1024];
        DatagramPacket dp = new DatagramPacket(b,b.length);

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

提示:在運(yùn)行程序時(shí),先運(yùn)行發(fā)送方程序,還是先運(yùn)行接收方程序都不會(huì)報(bào)錯(cuò),但是有可能會(huì)出現(xiàn)數(shù)據(jù)丟包,一般我們都先運(yùn)行接收方的程序代碼,再運(yùn)行發(fā)送方的程序代碼。

Receiver類(lèi)(接收方)運(yùn)行結(jié)果:

---接收方---

Sender類(lèi)(發(fā)送方)運(yùn)行結(jié)果:

---發(fā)送方---
數(shù)據(jù)已發(fā)送

Sender類(lèi)(發(fā)送方)運(yùn)行后,Receiver類(lèi)(接收方)接收到信息,運(yùn)行結(jié)果:

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

實(shí)例分析:

只有接收方先啟動(dòng)運(yùn)行,才會(huì)存在端口號(hào)為7788的程序,發(fā)送方才能發(fā)送數(shù)據(jù)到指定端口號(hào)7788,接收方才能接收數(shù)據(jù)。

不瞞你說(shuō),這也是個(gè)超級(jí)無(wú)敵簡(jiǎn)單的單向通信實(shí)例。

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

    關(guān)注

    28

    文章

    1038

    瀏覽量

    41191
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1402

    瀏覽量

    81074
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    330

    瀏覽量

    34672
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1046

    瀏覽量

    32956
  • 網(wǎng)絡(luò)編程
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    linxu網(wǎng)絡(luò)協(xié)議分析:IP協(xié)議、TCP協(xié)議、UDP協(xié)議

    本章節(jié)主要介紹linxu網(wǎng)絡(luò)模型、以及常用的網(wǎng)絡(luò)協(xié)議分析以太網(wǎng)協(xié)議、IP協(xié)議、TCP協(xié)議、UDP
    的頭像 發(fā)表于 10-28 16:44 ?4110次閱讀
    linxu網(wǎng)絡(luò)<b class='flag-5'>協(xié)議</b>分析:IP<b class='flag-5'>協(xié)議</b>、<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>、<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>

    TCP協(xié)議UDP協(xié)議的區(qū)別有哪些

    無(wú)法實(shí)現(xiàn);(3)TCP 協(xié)議有效載荷小于 UDP 協(xié)議(基于 MSS 計(jì)算),UDP 性能高于 TCP
    發(fā)表于 08-06 08:43

    TCPUDP協(xié)議簡(jiǎn)析

    、前言TCPUDP協(xié)議TCP/IP協(xié)議的核心。TCP
    發(fā)表于 12-15 08:13

    通訊協(xié)議TCPUDP協(xié)議使用方法

    通訊協(xié)議TCPUDP協(xié)議UDP會(huì)把數(shù)據(jù)股腦兒地發(fā)送出去,并不會(huì)在意是否全部收到,適用于廣播類(lèi)
    發(fā)表于 01-21 14:53

    LinuxUDP協(xié)議編程

    LinuxUDP協(xié)議編程 介紹UDP協(xié)議,并提供個(gè)適用于客戶(hù)端和服務(wù)器端的實(shí)例子程序。 
    發(fā)表于 10-16 22:22 ?4073次閱讀
    Linux<b class='flag-5'>下</b>的<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>編程

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

    TCPUDP都是網(wǎng)絡(luò)通信協(xié)議,也就是通信時(shí)都要遵守的規(guī)則,雙方在同規(guī)則”交流”,才能理解或者為之服務(wù).?
    的頭像 發(fā)表于 09-11 09:02 ?3.1w次閱讀

    tcpudp協(xié)議的異同

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

    TCP協(xié)議UDP協(xié)議的區(qū)別和相同點(diǎn)有哪些 看懂TCP協(xié)議UDP協(xié)議的優(yōu)缺點(diǎn)

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

    TCP協(xié)議UDP協(xié)議的區(qū)別

    TCP/IP協(xié)議中有兩個(gè)具有代表性的傳輸層協(xié)議,分別是TCP協(xié)議UDP
    的頭像 發(fā)表于 03-21 10:39 ?1389次閱讀

    明白TCP協(xié)議UDP協(xié)議(上)

    網(wǎng)絡(luò)編程有三個(gè)要素,分別是IP地址、端口號(hào)和通信協(xié)議,那本文主要講述的是TCPUDP這兩種通信協(xié)議,以及編程的實(shí)現(xiàn)。 首先,我們需要了解一下
    的頭像 發(fā)表于 05-18 17:17 ?869次閱讀
    <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'>協(xié)議</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>(上)

    TCP協(xié)議UDP協(xié)議最核心的區(qū)別是什么?

    對(duì)于TCP協(xié)議UDP協(xié)議,大家應(yīng)該都有所耳聞。TCP協(xié)議
    發(fā)表于 06-15 09:37 ?961次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>和<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>最核心的區(qū)別是什么?

    udp是什么協(xié)議 TCPUDP的區(qū)別

    TCP協(xié)議提供可靠的數(shù)據(jù)傳輸,UDP協(xié)議提供盡量高效的數(shù)據(jù)傳輸。TCP協(xié)議通過(guò)使用序列號(hào)、確認(rèn)應(yīng)
    的頭像 發(fā)表于 06-26 17:47 ?1.2w次閱讀

    什么是UDP協(xié)議?什么場(chǎng)景會(huì)去用這種協(xié)議呢?

    傳輸層除了TCP協(xié)議,還有個(gè)很重要的協(xié)議UDP協(xié)議。接下來(lái)看下UDP
    發(fā)表于 07-10 15:50 ?1720次閱讀
    什么是<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>?什么場(chǎng)景<b class='flag-5'>下</b>會(huì)去用這種<b class='flag-5'>協(xié)議</b>呢?

    TCP/IP協(xié)議進(jìn)階課程:5、UDP協(xié)議

    電子發(fā)燒友網(wǎng)站提供《TCP/IP協(xié)議進(jìn)階課程:5、UDP協(xié)議.pdf》資料免費(fèi)下載
    發(fā)表于 07-31 11:48 ?0次下載
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>進(jìn)階課程:5、<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>

    TCP協(xié)議UDP協(xié)議的區(qū)別

    1. 連接性 TCP(傳輸控制協(xié)議) : 面向連接 :在數(shù)據(jù)傳輸之前,TCP需要建立個(gè)連接,這通過(guò)三次握手過(guò)程完成。 可靠性 :旦連接建
    的頭像 發(fā)表于 01-22 09:44 ?793次閱讀