c# 网络通讯 源码

C# 网络通讯源码通常涉及使用 System.NetSystem.Net.Sockets 命名空间中的类,如 TcpClient, TcpListener, Socket 等。

简单的TCP客户端和服务器通信示例

TCP服务器端代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class TcpServer
{
    static void Main()
    {
        // 创建IP地址和端口号
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
        int port = 8000;
        // 创建TCP监听器
        TcpListener listener = new TcpListener(ipAddress, port);
        listener.Start();
        Console.WriteLine($"服务器正在监听端口 {port}...");
        while (true)
        {
            // 等待客户端连接
            TcpClient client = listener.AcceptTcpClient();
            Console.WriteLine("客户端已连接!");
            // 获取网络流
            NetworkStream stream = client.GetStream();
            // 读取数据
            byte[] buffer = new byte[1024];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);
            string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine($"收到消息:{message}");
            // 发送响应
            string response = "消息已收到";
            byte[] responseBytes = Encoding.UTF8.GetBytes(response);
            stream.Write(responseBytes, 0, responseBytes.Length);
            // 关闭连接
            client.Close();
        }
    }
}

TCP客户端代码

using System;
using System.Net.Sockets;
using System.Text;
class TcpClientApp
{
    static void Main()
    {
        // 创建IP地址和端口号
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
        int port = 8000;
        // 创建TCP客户端
        TcpClient client = new TcpClient(ipAddress, port);
        Console.WriteLine("连接到服务器...");
        // 获取网络流
        NetworkStream stream = client.GetStream();
        // 发送数据
        string message = "你好,服务器!";
        byte[] messageBytes = Encoding.UTF8.GetBytes(message);
        stream.Write(messageBytes, 0, messageBytes.Length);
        // 读取响应
        byte[] buffer = new byte[1024];
        int bytesRead = stream.Read(buffer, 0, buffer.Length);
        string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine($"收到服务器响应:{response}");
        // 关闭连接
        client.Close();
    }
}

上述代码中,服务器端创建一个TcpListener对象来监听指定的IP地址和端口,当有客户端连接时,它接受连接并读取客户端发送的数据,然后发送一个响应给客户端,客户端创建一个TcpClient对象来连接到服务器,发送一条消息并接收服务器的响应。

c#  网络通讯 源码

简单的UDP客户端和服务器通信示例

UDP服务器端代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class UdpServer
{
    static void Main()
    {
        // 创建IP地址和端口号
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
        int port = 9000;
        // 创建UDP套接字
        UdpClient udpServer = new UdpClient(ipAddress, port);
        Console.WriteLine($"UDP服务器正在监听端口 {port}...");
        while (true)
        {
            // 接收数据
            IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
            byte[] receivedBytes = udpServer.Receive(ref remoteEndPoint);
            string message = Encoding.UTF8.GetString(receivedBytes);
            Console.WriteLine($"收到来自 {remoteEndPoint} 的消息:{message}");
            // 发送响应
            string response = "消息已收到(UDP)";
            byte[] responseBytes = Encoding.UTF8.GetBytes(response);
            udpServer.Send(responseBytes, responseBytes.Length, remoteEndPoint);
        }
    }
}

UDP客户端代码

using System;
using System.Net;
using System.Text;
using System.Net.Sockets;
class UdpClientApp
{
    static void Main()
    {
        // 创建IP地址和端口号
        IPAddress serverIpAddress = IPAddress.Parse("127.0.0.1");
        int serverPort = 9000;
        IPEndPoint serverEndPoint = new IPEndPoint(serverIpAddress, serverPort);
        // 创建UDP套接字
        UdpClient udpClient = new UdpClient();
        // 发送数据
        string message = "你好,UDP服务器!";
        byte[] messageBytes = Encoding.UTF8.GetBytes(message);
        udpClient.Send(messageBytes, messageBytes.Length, serverEndPoint);
        Console.WriteLine("消息已发送到服务器");
        // 接收响应
        byte[] buffer = new byte[1024];
        int bytesRead = udpClient.Receive(ref serverEndPoint, buffer, buffer.Length);
        string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine($"收到服务器响应:{response}");
    }
}

在UDP通信中,服务器端创建一个UdpClient对象来监听指定的IP地址和端口,当有数据到达时,它接收数据并发送一个响应给客户端,客户端也创建一个UdpClient对象来发送数据到服务器并接收服务器的响应,与TCP不同,UDP是一种无连接的协议,数据传输不保证可靠性。

相关问答FAQs

问题1:TCP和UDP在网络通信中有什么区别?

c#  网络通讯 源码

:TCP(传输控制协议)是一种面向连接的协议,提供可靠的、有序的和无差错的数据传输,它在传输数据前需要先建立连接,数据传输过程中会进行确认和重传等操作,以确保数据的完整性和准确性,UDP(用户数据报协议)是一种无连接的协议,不保证数据的可靠传输,也不维护数据的顺序,它的传输速度较快,适用于对实时性要求较高但对数据准确性要求相对较低的应用场景,如视频直播、音频通话等,而TCP适用于对数据准确性要求较高的应用,如文件传输、网页浏览等。

问题2:在上述TCP和UDP示例中,如何提高网络通信的安全性?

c#  网络通讯 源码

:可以采取以下措施来提高网络通信的安全性:一是使用加密技术对传输的数据进行加密,防止数据被窃取或篡改,可以使用SSL/TLS协议对TCP连接进行加密,二是进行身份验证,确保通信双方的身份合法,可以通过数字证书、用户名密码等方式进行身份验证,三是设置访问控制,限制对网络资源的访问权限,只允许授权的用户或应用程序进行访问,四是定期更新和维护网络设备和软件,及时修复安全漏洞,防止被黑客攻击,还可以使用防火墙、入侵检测系统等网络安全设备和技术来增强网络的安全性。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1563672.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希未希
上一篇 2025-02-14 02:18
下一篇 2025-02-14 02:22

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入