引言
在当今数字化时代,网络编程已成为软件开发的重要技能之一。C#作为一门强大的编程语言,在网络编程领域拥有广泛的应用。本文将带您走进C#网络编程的世界,通过实战案例,轻松实现聊天室、文件传输等功能。
聊天室实现
1. 环境准备
首先,您需要安装.NET开发环境,如Visual Studio。确保您的开发环境已配置正确。
2. 服务器端实现
以下是一个简单的聊天室服务器端示例代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class ChatServer
{
private const int Port = 8000;
private Socket serverSocket;
public ChatServer()
{
IPAddress localAddr = IPAddress.Any;
IPEndPoint localEp = new IPEndPoint(localAddr, Port);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(localEp);
serverSocket.Listen(10);
}
public void Start()
{
Console.WriteLine("Chat server is running...");
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("Client connected: " + clientSocket.RemoteEndPoint.ToString());
while (true)
{
byte[] buffer = new byte[1024];
int bytesRead = clientSocket.Receive(buffer);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received message: " + message);
// Echo the message back to the client
byte[] messageBytes = Encoding.ASCII.GetBytes(message);
clientSocket.Send(messageBytes);
}
}
}
public class Program
{
public static void Main()
{
ChatServer chatServer = new ChatServer();
chatServer.Start();
}
}
3. 客户端实现
以下是一个简单的聊天室客户端示例代码:
using System;
using System.Net.Sockets;
using System.Text;
public class ChatClient
{
private const string Host = "127.0.0.1";
private const int Port = 8000;
private Socket socket;
public ChatClient()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(Host, Port);
}
public void SendMessage(string message)
{
byte[] messageBytes = Encoding.ASCII.GetBytes(message);
socket.Send(messageBytes);
}
public string ReceiveMessage()
{
byte[] buffer = new byte[1024];
int bytesRead = socket.Receive(buffer);
return Encoding.ASCII.GetString(buffer, 0, bytesRead);
}
public void Close()
{
socket.Close();
}
}
public class Program
{
public static void Main()
{
ChatClient chatClient = new ChatClient();
Console.WriteLine("Connected to chat server.");
Console.WriteLine("Type a message and press Enter to send:");
string message;
while ((message = Console.ReadLine()) != "exit")
{
chatClient.SendMessage(message);
string receivedMessage = chatClient.ReceiveMessage();
Console.WriteLine("Server response: " + receivedMessage);
}
chatClient.Close();
}
}
文件传输实现
1. 环境准备
确保您的开发环境已配置正确,并了解基本的文件操作。
2. 服务器端实现
以下是一个简单的文件传输服务器端示例代码:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class FileTransferServer
{
private const int Port = 8000;
private Socket serverSocket;
public FileTransferServer()
{
IPAddress localAddr = IPAddress.Any;
IPEndPoint localEp = new IPEndPoint(localAddr, Port);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(localEp);
serverSocket.Listen(10);
}
public void Start()
{
Console.WriteLine("File transfer server is running...");
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("Client connected: " + clientSocket.RemoteEndPoint.ToString());
string filePath = @"C:\path\to\file.txt";
byte[] fileData = File.ReadAllBytes(filePath);
clientSocket.Send(fileData);
clientSocket.Close();
}
}
public class Program
{
public static void Main()
{
FileTransferServer fileTransferServer = new FileTransferServer();
fileTransferServer.Start();
}
}
3. 客户端实现
以下是一个简单的文件传输客户端示例代码:
using System;
using System.IO;
using System.Net.Sockets;
using System.Text;
public class FileTransferClient
{
private const string Host = "127.0.0.1";
private const int Port = 8000;
private Socket socket;
public FileTransferClient()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(Host, Port);
}
public void ReceiveFile(string filePath)
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
{
while ((bytesRead = socket.Receive(buffer)) > 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
}
public void Close()
{
socket.Close();
}
}
public class Program
{
public static void Main()
{
FileTransferClient fileTransferClient = new FileTransferClient();
fileTransferClient.ReceiveFile(@"C:\path\to\received_file.txt");
Console.WriteLine("File received successfully.");
fileTransferClient.Close();
}
}
总结
本文通过两个实战案例,介绍了C#网络编程的基本知识和应用。通过学习和实践,您将能够轻松实现聊天室、文件传输等功能。祝您学习愉快!
