国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 使用UDP進行網(wǎng)絡(luò)通信

這篇具有很好參考價值的文章主要介紹了C# 使用UDP進行網(wǎng)絡(luò)通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ?在選擇使用協(xié)議的時候,選擇UDP必須要謹慎。在網(wǎng)絡(luò)質(zhì)量令人十分不滿意的環(huán)境下,UDP協(xié)議數(shù)據(jù)包丟失會比較嚴重。但是由于UDP的特性:它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點,所以通常音頻、視頻和普通數(shù)據(jù)在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響。比如我們聊天用的ICQ和QQ就是使用的UDP協(xié)議。

服務(wù)端代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;


namespace UDP服務(wù)器
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
            textBox1.Text = "127.0.0.1";
            textBox2.Text = "8401";
        }
        /// <summary>
        /// 獲取本地IP
        /// </summary>
        private void label1_Click(object sender, EventArgs e)
        {
            string ip = IPAddress.Any.ToString();
            textBox1.Text = ip;
        }

        Socket server;
        private void button2_Click(object sender, EventArgs e)
        {

            server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            server.Bind(new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text)));//綁定端口號和IP
            //server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
            listBox1.Items.Add("服務(wù)器已經(jīng)成功開啟!");
            //開啟接收消息線程
            Thread t = new Thread(ReciveMsg);
            t.IsBackground = true;
            t.Start();
        }
        /// <summary>
        /// 向特定ip的主機的端口發(fā)送數(shù)據(jù)
        /// </summary>te
        void SendMsg()
        {
            EndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8400);    //向指定的IP和端口發(fā)送消息
            string msg = textBox3.Text;
            server.SendTo(Encoding.UTF8.GetBytes(msg), point);
        }


        /// <summary>
        /// 接收發(fā)送給本機ip對應(yīng)端口號的數(shù)據(jù)
        /// </summary>
        void ReciveMsg()
        {
            while (true)
            {
                EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用來保存發(fā)送方的ip和端口號
                byte[] buffer = new byte[1024 * 1024];
                int length = server.ReceiveFrom(buffer, ref point);//接收數(shù)據(jù)報
                string message = Encoding.UTF8.GetString(buffer, 0, length);
                listBox1.Items.Add(point.ToString() + ":" + message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox3.Text != "")
            {
                //開啟發(fā)送消息線程
                Thread t3 = new Thread(SendMsg);
                t3.Start();
                listBox1.Items.Add(textBox1.Text + ":" + textBox2.Text + ":" + textBox3.Text);
            }


        }


    }
}

客戶端代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace UDP客戶端
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
            textBox1.Text = "127.0.0.1";
            textBox2.Text = "8400";
        }
        /// <summary>
        /// 創(chuàng)建客戶端
        /// </summary>
        Socket client;

        private void button2_Click(object sender, EventArgs e)
        {
            
           

            ///創(chuàng)建客戶端
            client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            client.Bind(new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text)));
            ///線程問題
            Thread thread = new Thread(ReciveMsg);
            thread.IsBackground = true;
            thread.Start(client);
            listBox1.Items.Add("客戶端已成功開啟!");
        }

        /// <summary>
        /// 向特定ip的主機的端口發(fā)送數(shù)據(jù)
        /// </summary>
        void SendMsg()
        {
            EndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8401);    //向指定的IP和端口發(fā)送消息
            ///發(fā)送內(nèi)容
            string msg = textBox3.Text;
            ///將數(shù)據(jù)發(fā)送到指定的ip的主機的端口
            client.SendTo(Encoding.UTF8.GetBytes(msg), point);
        }
        /// <summary>
        /// 接收發(fā)送給本機ip對應(yīng)端口號的數(shù)據(jù)
        /// </summary>
        void ReciveMsg(object o)
        {

            while (true)
            {
                try
                {
                    ///用來保存發(fā)送方的ip和端口號
                    EndPoint point = new IPEndPoint(IPAddress.Any, 0);
                    //MessageBox.Show(point.ToString());
                    ///定義客戶端接收到的信息大小
                    byte[] buffer = new byte[1024 * 1024];
                    ///接收到的信息大小(所占字節(jié)數(shù))
                    int length = client.ReceiveFrom(buffer, ref point);
                    string message = Encoding.UTF8.GetString(buffer, 0, length);
                    listBox1.Items.Add(point.ToString() + ":" + message);
                }
                catch (Exception)
                {
                    client.Close();
                }

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox3.Text != "")
            {
                //開啟發(fā)送消息線程
                Thread t2 = new Thread(SendMsg);
                t2.Start();
                listBox1.Items.Add(textBox1.Text + ":" + textBox2.Text + ":" + textBox3.Text);
            }

        }
    }
}

效果展示

c# udp,c#,udp,網(wǎng)絡(luò),c#,網(wǎng)絡(luò)協(xié)議

代碼下載地址:

鏈接:https://pan.baidu.com/s/1r-V80I5fJ-8noF8YgMOlLA?
提取碼:qx3s文章來源地址http://www.zghlxwxcb.cn/news/detail-525583.html

到了這里,關(guān)于C# 使用UDP進行網(wǎng)絡(luò)通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java網(wǎng)絡(luò)編程之IP,端口號,通信協(xié)議(UDP,TCP)

    Java網(wǎng)絡(luò)編程之IP,端口號,通信協(xié)議(UDP,TCP)

    ① C/S :客戶端/服務(wù)器 在用戶本地需要下載安裝客戶端程序,在遠程有一個服務(wù)器端程序。 優(yōu)點:畫面精美,用戶體驗好 缺點:用戶需要下載更新 ② B/S :瀏覽器/服務(wù)器 只需要一個瀏覽器,用戶通過指定網(wǎng)址訪問對應(yīng)的服務(wù)器。 優(yōu)點:不需要開發(fā)客戶端,只需要頁面+服務(wù)

    2024年02月03日
    瀏覽(96)
  • 【網(wǎng)絡(luò)通信】探索UDP與TCP協(xié)議、IP地址和端口號的奧妙

    【網(wǎng)絡(luò)通信】探索UDP與TCP協(xié)議、IP地址和端口號的奧妙

    ?? 個人主頁: Dawn黎明開始 ?? 系列專欄: 網(wǎng)絡(luò)奇幻之旅 ? 每日一句:往前走,朝著光 ?? 歡迎大家:關(guān)注 ?? +點贊 ?? +評論??+收藏?? 文章目錄 ??前言 一.網(wǎng)絡(luò)通信 1.1網(wǎng)絡(luò)通信協(xié)議 1.2TCP/IP協(xié)議中的四個層次 二.UDP協(xié)議 2.1定義 2.2UDP連接的交互過程 三.TCP協(xié)議 3.1定義

    2024年02月05日
    瀏覽(18)
  • SCTP, TCP, UDP, IP, ICMP都在哪一層?(TCP/IP網(wǎng)絡(luò)通信協(xié)議學(xué)習(xí))

    SCTP, TCP, UDP, IP, ICMP都在哪一層?(TCP/IP網(wǎng)絡(luò)通信協(xié)議學(xué)習(xí))

    TCP/IP網(wǎng)絡(luò)通信協(xié)議最早是由 羅伯特·卡恩 (Robert E. Kahn)和 文頓·瑟夫 (Vinton G. Cerf)于1972年提出的,它是一個實際的協(xié)議棧。 OSI七層網(wǎng)絡(luò)通信協(xié)議最早是 由國際標準化組織 (ISO)于1977年提出的,它是一個理論模型。TCP/IP網(wǎng)絡(luò)通信協(xié)議由于其簡單性和實用性,成為 事實上

    2024年01月22日
    瀏覽(172)
  • 使用 python socket 實現(xiàn)UDP/TCP網(wǎng)絡(luò)通信

    使用 python socket 實現(xiàn)UDP/TCP網(wǎng)絡(luò)通信

    目錄 目錄 1.socket簡介 2.創(chuàng)建socket 2.1創(chuàng)建UDPSocket 2.2創(chuàng)建TCPSocket 3.使用UDPSocket發(fā)送數(shù)據(jù)并接收 4.使用UDPSocket發(fā)送廣播 5.UDPSocket聊天器 (多線程實現(xiàn)消息的收發(fā)功能) 6.使用TCPSocket建立客戶端 7.使用TCPSocket建立服務(wù)端 ? ? ? ?socket(簡稱:套接字),是支持TCP和UDP(網(wǎng)絡(luò)傳輸方式

    2023年04月10日
    瀏覽(25)
  • 樹莓派學(xué)習(xí):建立socket進行網(wǎng)絡(luò)通信+tcp+udp+端口+字節(jié)序+socketAPI+地址轉(zhuǎn)換API+聊天對話框?qū)崙?zhàn)

    樹莓派學(xué)習(xí):建立socket進行網(wǎng)絡(luò)通信+tcp+udp+端口+字節(jié)序+socketAPI+地址轉(zhuǎn)換API+聊天對話框?qū)崙?zhàn)

    目錄 socket套接字網(wǎng)絡(luò)通信學(xué)習(xí) 數(shù)據(jù)協(xié)議 tcp udp ip地址 端口 字節(jié)序 步驟 ?API介紹 地址轉(zhuǎn)換API 實戰(zhàn)? 聊天對話框 服務(wù)器? 運行時后面要傳IP地址和端口 客戶端? ?運行時后面要傳IP地址和端口 socket是網(wǎng)絡(luò)通信,通信的數(shù)據(jù)協(xié)議有http、tcp、udp等等,簡單來說就是傳輸數(shù)據(jù)的格式

    2024年02月05日
    瀏覽(28)
  • 【網(wǎng)絡(luò)原理】使用Java基于UDP實現(xiàn)簡單客戶端與服務(wù)器通信

    【網(wǎng)絡(luò)原理】使用Java基于UDP實現(xiàn)簡單客戶端與服務(wù)器通信

    我們用Java實現(xiàn)UDP數(shù)據(jù)報套接字編程,需要借用以下API來實現(xiàn) 網(wǎng)絡(luò)編程, 本質(zhì)上是要操作網(wǎng)卡. 但是網(wǎng)卡不方便直接操作. 在操作系統(tǒng)內(nèi)核中, 使用了一種特殊的叫做 “socket” 這樣的文件來抽象表示網(wǎng)卡. 因此進行網(wǎng)絡(luò)通信, 勢必需要先有一個 socket 對象. DatagramSocket 是UDP Socket,

    2024年03月11日
    瀏覽(26)
  • QT網(wǎng)絡(luò)通信-TCP、UDP通信

    時間記錄:2024/1/17 pro文件添加模塊network (1)創(chuàng)建TCP服務(wù)器對象 QTcpServer (2)為 QTcpServer 對象的 newConnection 信號綁定槽,用來監(jiān)聽TCP客戶端的新連接,有新的客戶端連接便會觸發(fā)此信號 (3)使用 nextPendingConnection 方法獲取連接的Tcp客戶端對象 QTcpSocket (4)為 QTcpSocket 的 r

    2024年01月18日
    瀏覽(30)
  • Unity實現(xiàn)網(wǎng)絡(luò)通信(UDP)

    Unity實現(xiàn)網(wǎng)絡(luò)通信(UDP)

    UDP通信特點: ? ? ? ? 無連接,多對多 ? ? ? ? 不可靠 ? ? ? ? 面向數(shù)據(jù)報 ? ? ? ? 效率高 UDP中的分包與黏包 分包:一段數(shù)據(jù)被分為兩段或多段傳輸,在UDP通信方式中,因為UDP的不可靠性無法保證有序傳輸,因此盡量避免UDP自動分包。 ????????其中一種方式是保證消

    2024年02月04日
    瀏覽(17)
  • C#和西門子PLC使用Udp通信

    C#和西門子PLC使用Udp通信

    目錄 一、PLC程序工程創(chuàng)建 1、硬件配置 2、程序編程 3、添加監(jiān)控表 二、C#程序工程創(chuàng)建 1、界面UI 2、代碼編寫 (1)創(chuàng)建本地Udp (2)讀PLC的線程函數(shù) (3)定時器 (4)上位機寫寄存器操作 (5)StringToByte()方法封裝 (6)窗口關(guān)閉 3、C#和PLC測試 (1)C#上位機寫操作1 (2)C#上位

    2024年02月04日
    瀏覽(27)
  • 【Unity】網(wǎng)絡(luò)通信(TCP&UDP)

    【Unity】網(wǎng)絡(luò)通信(TCP&UDP)

    Unity/C#要想和其他電腦或者軟件程序通訊,最好的方式是通過網(wǎng)絡(luò)進行通訊,下面簡要介紹以下其原理和實現(xiàn): TCP和UDP是傳輸層協(xié)議,使用IP協(xié)議從一個網(wǎng)絡(luò)傳送數(shù)據(jù)包到另一個網(wǎng)絡(luò)。把IP想像成一種高速公路,它允許其它協(xié)議在上面行駛并找到到其它電腦的出口。 兩者的不

    2024年01月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包