首页 > 其他分享 >.Net ——TCP/IP

.Net ——TCP/IP

时间:2023-12-05 15:24:56浏览次数:23  
标签:Console IP TCP WriteLine Net data 客户端

TCP/IP是什么,可以用来干什么:

TCP/IP是一种网络通信协议,它是互联网基础设施的核心,用于在计算机之间进行可靠的数据传输。在 .NET 中,也提供了丰富的类库和工具来支持 TCP/IP 协议的应用开发。

使用 TCP/IP 协议,可以完成以下一些常见的任务:

  1. 网络通信:通过 TCP/IP 协议,客户端和服务器端可以在不同的计算机或设备之间进行通信,实现数据的传输和交换。

  2. 远程控制:通过 TCP/IP 协议,可以远程控制其他计算机或设备,包括执行命令、获取数据、发送消息等操作。

  3. 文件传输:通过 TCP/IP 协议,可以实现文件的传输,包括上传、下载、备份等操作。

  4. 数据共享:通过 TCP/IP 协议,可以实现数据的共享和协作,包括数据库的访问、分布式系统的协作等操作。

  5. 网络编程:通过使用.NET提供的类库和框架,可以方便地进行网络编程,实现自定义的应用程序和服务。

以上只是 TCP/IP 协议的一些应用场景,实际上,TCP/IP 协议还有很多其他的应用,如网络游戏、视频流媒体、远程桌面等。

需要注意的是,使用 TCP/IP 协议进行应用开发需要注意安全性和稳定性,需要确保网络环境的正确配置,以及适当处理连接建立失败、超时、异常等情况。此外,还需要考虑网络拥塞和带宽限制等问题,以确保数据传输的稳定和可靠。

Net中的TCP/IP:

在 .NET 中,TCP/IP 是一种常用的网络通信协议,用于在计算机之间进行可靠的数据传输。通过 .NET 框架提供的类库,我们可以方便地使用 TCP/IP 协议进行网络编程。

在 .NET 中,可以使用 System.Net.Sockets 命名空间下的类和方法来实现 TCP/IP 相关的功能。以下是一些常用的类和方法:

  1. Socket 类:代表了一个 TCP/IP 连接的套接字。可以使用 Socket 类创建客户端或服务器端的套接字,并通过其中的方法来进行发送和接收数据。

  2. TcpClient 类:简化了使用 TCP/IP 协议进行通信的客户端开发。它封装了底层的 Socket 对象,并提供了更高级的方法和事件来进行连接、发送和接收数据。

  3. TcpListener 类:简化了使用 TCP/IP 协议进行通信的服务器端开发。它监听指定的 IP 地址和端口,接受客户端的连接请求,并提供了方法和事件来处理连接、发送和接收数据。

  4. NetworkStream 类:表示基于 TCP/IP 的网络流,将数据从套接字发送到接收方。可以通过 NetworkStream 类的方法来发送和接收数据。

使用 TCP/IP 协议进行网络编程的一般步骤如下:

  1. 创建 Socket 对象或者使用 TcpClientTcpListener 类创建对应的对象。

  2. 建立连接(如果是客户端)或者监听连接请求(如果是服务器端)。

  3. 通过 NetworkStream 类的方法进行数据的发送和接收。

  4. 根据需求,关闭连接和释放资源。

请注意,使用 TCP/IP 进行网络通信需要在网络环境中确保正确的配置,并且需要适当处理连接建立失败、超时、异常等情况。网络编程涉及到底层的网络通信,因此需要仔细处理错误和异常情况,确保稳定和可靠的数据传输。

示例:

.NET 的 TCP/IP 协议可以用来实现客户端和服务器之间的通信,比如采集数据、读取文件等等。以下是一些使用示例代码:

  1. 服务器端代码:
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    class Program
    {
        static void Main(string[] args)
        {
            byte[] bytes = new byte[1024];
            string data = null;
    
            // 创建本地IP地址和TCP端口号
            IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
            int port = 11000;
    
            // 创建TCP/IP socket
            TcpListener listener = new TcpListener(ipAddress, port);
    
            try
            {
                // 启动监听器
                listener.Start();
    
                Console.WriteLine("Waiting for a connection...");
    
                // 等待一个客户端连接
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine("Connected!");
    
                // 获取客户端连接网络流
                NetworkStream stream = client.GetStream();
    
                int i;
    
                // 循环读取客户端发送的数据
                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    // 转换成ASCII码字符串
                    data = Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine("Received: {0}", data);
    
                    // 将数据转换成大写并发送回客户端
                    data = data.ToUpper();
    
                    byte[] msg = Encoding.ASCII.GetBytes(data);
    
                    stream.Write(msg, 0, msg.Length);
                    Console.WriteLine("Sent: {0}", data);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                // 关闭连接
                listener.Stop();
            }
    
            Console.WriteLine("\n Press any key to exit...");
            Console.ReadKey();
        }
    }
    

     

  2. 客户端代码:
    using System;
    using System.Net.Sockets;
    using System.Text;
    
    class Program
    {
        static void Main(string[] args)
        {
            byte[] bytes = new byte[1024];
    
            // 创建本地IP地址和TCP端口号
            string ipAddress = "127.0.0.1";
            int port = 11000;
    
            try
            {
                // 创建TCP/IP socket
                TcpClient client = new TcpClient(ipAddress, port);
    
                // 获取网络流
                NetworkStream stream = client.GetStream();
    
                string data = "Hello, server!";
                byte[] msg = Encoding.ASCII.GetBytes(data);
    
                // 发送数据到服务器
                stream.Write(msg, 0, msg.Length);
                Console.WriteLine("Sent: {0}", data);
    
                // 接收从服务器返回的数据
                int i = stream.Read(bytes, 0, bytes.Length);
                data = Encoding.ASCII.GetString(bytes, 0, i);
                Console.WriteLine("Received: {0}", data);
    
                // 关闭连接
                client.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
    
            Console.WriteLine("\n Press any key to exit...");
            Console.ReadKey();
        }
    }
    

以上代码示例演示了 TCP/IP 协议在客户端和服务器之间进行基本的字符串通信,你可以根据需要进行修改和扩展。需要注意的是,使用 TCP/IP 协议进行应用开发需要注意安全性和稳定性,需要确保网络环境的正确配置,以及适当处理连接建立失败、超时、异常等情况。

标签:Console,IP,TCP,WriteLine,Net,data,客户端
From: https://www.cnblogs.com/GaoUpUp/p/17877347.html

相关文章

  • .NET——中间件与管道
    中间件:中间件是什么,可以干什么:在.NET中,中间件是一种用于处理HTTP请求和响应的组件。它们将请求传递给下一个中间件或终端处理程序,并允许开发人员在请求处理的不同阶段执行自定义操作。以下是一些常见的.NET中间件:AuthenticationMiddleware:用于认证用户身份并授权访问......
  • JS(JavaScript)
    1.介绍:JavaScript语言主要是完成页面的数据验证,因此运行在客户端,需运用浏览器来解析执行JavaScript代码。ECMAScript是JS的一个标准。 一个完整的JS是由ECMAScript,DOM(文档对象模型),Bom(浏览器对象模型)组成的。 JS是弱类型(类型可变)Java是强类型。......
  • Ntrip协议
    Ntrip通讯协议1.01.Ntrip协议CORS(ContinuouslyOperatingReferenceStations)就是网络基准站,通过网络收发GPS差分数据。用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位。访问CORS系统,就需要网络通讯协议。NTRIP(NetworkedTransportofRTCMviaInternetP......
  • 每个.NET开发都应掌握的C#处理文件系统I/O知识点
    上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.NET开发领域,文件系统I/O是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.NET平台的主要编程语言,提供了丰富而强大的文件系统I/O功能,为开发人员提供了灵活的工具,使其能够高效地处理文件操作。本......
  • IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!
    9Docker在Docker镜像层内预览文件现在可以在Services(服务)工具窗口中轻松访问和预览Docker镜像层的内容。从列表选择镜像,选择Showlayers(显示层),然后点击Analyzeimageformoreinformation(分析镜像以获得更多信息)。这将打开层中存储的文件列表,你可以右键点击文件,然后......
  • .NET8 极致性能优化 AOT
    前言.NET8对于性能的优化是方方面面的,所以AOT预编译机器码也是不例外的。本篇来看下对于AOT的优化。概述首先要明确一个概念,.NET里面的AOT它是原生的。什么意思呢?也就是说通过ILC编译器(AOT编译器,参考:.Net7新编译器ILC简析)编译出来的代码是各个平台上可以直......
  • 硬件开发笔记(十四):RK3568底板电路LVDS模块、MIPI模块电路分析、LVDS硬件接口、MIPI硬件
    前言  本篇继续分析底板原理图mipi/lvds屏幕电路原理图、硬件接口详解。 LVDS与MIPI的区别  液晶屏有RGBTTL、LVDS、MIPI、HDMI接口,这些接口区别于信号的类型(种类),也区别于信号内容。RGBTTL接口信号类型是TTL电平,信号的内容是RGB666或者RGB888还有行场同步和......
  • .NET8极致性能优化AOT
    前言.NET8对于性能的优化是方方面面的,所以AOT预编译机器码也是不例外的。本篇来看下对于AOT的优化。原文:.NET8极致性能优化AOT详述首先明确一个概念,.NET里面的AOT它是原生的。什么意思呢?也就是说通过ILC编译器(AOT编译器,参考:.Net7新编译器ILC简析)编译出来的代码是各个平......
  • .NET Core C#系列之UseStaticFiles静态文件高级用法
    转自:https://blog.csdn.net/sD7O95O/article/details/130002295静态文件解决跨域代码如下:1app.UseStaticFiles(newStaticFileOptions2{3OnPrepareResponse=(c)=>4{5......
  • 易基因:ChIP-seq等揭示SETD2介导H3K36me3调控结直肠癌进展的表观遗传机制|CTM研究
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。结直肠癌(Colorectalcancer,CRC)是一种复杂的多阶段疾病,由基因突变和表观遗传改变相互作用引起。组蛋白H3K36三甲基转移酶SET结构域2(SETD2)是一种表观遗传信号分子,在结直肠癌中突变率为5%。SETD2在氧化偶氮甲烷......