首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]掌握C#网络编程,实例教学带你轻松入门

发布于 2025-06-22 11:05:55
0
841

引言C作为一种强大的编程语言,广泛应用于Windows平台的应用开发。网络编程是C开发中一个重要的组成部分,它允许程序与网络上的其他设备进行通信。本篇文章将通过实例教学的方式,帮助初学者轻松入门C网络...

引言

C#作为一种强大的编程语言,广泛应用于Windows平台的应用开发。网络编程是C#开发中一个重要的组成部分,它允许程序与网络上的其他设备进行通信。本篇文章将通过实例教学的方式,帮助初学者轻松入门C#网络编程。

第一章:C#网络编程基础

1.1 网络编程概述

网络编程是指使用编程语言实现网络通信的过程。在C#中,网络编程主要通过System.NetSystem.Net.Sockets命名空间中的类来实现。

1.2 网络通信模型

网络通信模型主要有两种:客户端-服务器模型和 peer-to-peer 模型。在客户端-服务器模型中,客户端主动发起请求,服务器被动响应;而在 peer-to-peer 模型中,所有设备都可以既是客户端也是服务器。

1.3 C#中的网络类

  • System.Net.Dns:用于域名解析。
  • System.Net.Http:用于HTTP通信。
  • System.Net.Sockets:用于套接字编程。

第二章:套接字编程

套接字是网络编程中最基本的组件,它允许两个程序通过网络进行通信。

2.1 套接字类型

  • 流式套接字(Stream Sockets):用于传输大量数据,如TCP。
  • 数据报套接字(Datagram Sockets):用于传输少量数据,如UDP。

2.2 TCP编程实例

下面是一个简单的TCP客户端和服务器示例:

// TCP服务器
using System;
using System.Net;
using System.Net.Sockets;
public class TcpServer
{ public static void Main() { IPAddress localAddr = IPAddress.Parse("127.0.0.1"); TcpListener listener = new TcpListener(localAddr, 13000); listener.Start(); Console.WriteLine("Server started. Waiting for a connection..."); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Client connected."); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string dataReceived = System.Text.Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("Received: {0}", dataReceived); // Send back a message string message = "Hello from server!"; byte[] msg = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(msg, 0, msg.Length); client.Close(); listener.Stop(); }
}
// TCP客户端
using System;
using System.Net.Sockets;
using System.Text;
public class TcpClient
{ public static void Main() { TcpClient client = new TcpClient("127.0.0.1", 13000); NetworkStream stream = client.GetStream(); byte[] buffer = Encoding.ASCII.GetBytes("Hello from client!"); stream.Write(buffer, 0, buffer.Length); buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("Received: {0}", dataReceived); stream.Close(); client.Close(); }
}

2.3 UDP编程实例

UDP编程相对简单,下面是一个简单的UDP客户端和服务器示例:

// UDP服务器
using System;
using System.Net;
using System.Net.Sockets;
public class UdpServer
{ public static void Main() { IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 13000); UdpListener listener = new UdpListener(localEndPoint); Console.WriteLine("UDP server started. Waiting for a connection..."); UdpReceiveResult result = listener.Receive-ref; Console.WriteLine("Received: {0}", result.Buffer.ToString()); byte[] reply = Encoding.ASCII.GetBytes("Hello from server!"); IPEndPoint remoteEndPoint = new IPEndPoint(result.RemoteEndPoint.Address, result.RemoteEndPoint.Port); listener.Send(reply, reply.Length, remoteEndPoint); }
}
// UDP客户端
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class UdpClient
{ public static void Main() { IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 13000); UdpClient client = new UdpClient(); byte[] sendBytes = Encoding.ASCII.GetBytes("Hello from client!"); client.Send(sendBytes, sendBytes.Length, remoteEndPoint); UdpReceiveResult result = client.Receive-ref; Console.WriteLine("Received: {0}", result.Buffer.ToString()); }
}

第三章:HTTP编程

HTTP编程在C#中主要通过System.Net.Http命名空间中的类来实现。

3.1 HTTP客户端

下面是一个简单的HTTP客户端示例,用于发送GET请求:

using System;
using System.Net.Http;
public class HttpExample
{ public static void Main() { HttpClient client = new HttpClient(); string response = client.GetStringAsync("http://www.example.com").Result; Console.WriteLine(response); }
}

3.2 HTTP服务器

下面是一个简单的HTTP服务器示例,用于响应GET请求:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class HttpServer
{ public static void Main() { TcpListener listener = new TcpListener(IPAddress.Any, 80); listener.Start(); while (true) { TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string request = Encoding.UTF8.GetString(buffer, 0, bytesRead); if (request.StartsWith("GET")) { string response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nHello, World!"; byte[] reply = Encoding.UTF8.GetBytes(response); stream.Write(reply, 0, reply.Length); } stream.Close(); client.Close(); } }
}

第四章:总结

通过本章的学习,读者应该对C#网络编程有了基本的了解。网络编程是一个广泛且复杂的领域,本篇文章只是提供了一个入门级的指导。在实际开发中,还需要深入学习更多的网络协议和编程技巧。希望本文能帮助读者在C#网络编程的道路上迈出坚实的步伐。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流