在C#中,可以使用多进程和网络通信来实现并行处理和数据传输。这里是一个简单的示例,展示了如何在C#中使用多进程和网络通信。
首先,我们需要创建一个TCP服务器,用于监听客户端连接和接收数据。以下是一个简单的TCP服务器示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class TcpServer
{
private TcpListener _listener;
public TcpServer(int port)
{
_listener = new TcpListener(IPAddress.Any, port);
}
public void Start()
{
_listener.Start();
Console.WriteLine("Server started.");
while (true)
{
var client = _listener.AcceptTcpClient();
Console.WriteLine("Client connected.");
var thread = new Thread(HandleClient);
thread.Start(client);
}
}
private void HandleClient(object obj)
{
var client = (TcpClient)obj;
var stream = client.GetStream();
var buffer = new byte[1024];
while (true)
{
var bytesRead = stream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0) break;
var data = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received: {data}");
}
client.Close();
Console.WriteLine("Client disconnected.");
}
}
接下来,我们需要创建一个TCP客户端,用于连接到服务器并发送数据。以下是一个简单的TCP客户端示例:
using System;
using System.Net.Sockets;
using System.Text;
class TcpClient
{
private TcpClient _client;
public TcpClient(string host, int port)
{
_client = new TcpClient(host, port);
}
public void SendData(string data)
{
var stream = _client.GetStream();
var buffer = Encoding.UTF8.GetBytes(data);
stream.Write(buffer, 0, buffer.Length);
}
}
现在,我们可以创建一个多进程应用程序,其中一个进程作为服务器,另一个进程作为客户端。以下是一个简单的多进程示例:
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
// 启动服务器进程
var serverProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "dotnet",
Arguments = $"{typeof(Program).Assembly.Location} server",
UseShellExecute = false,
CreateNoWindow = true
}
};
serverProcess.Start();
// 启动客户端进程
var clientProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "dotnet",
Arguments = $"{typeof(Program).Assembly.Location} client",
UseShellExecute = false,
CreateNoWindow = true
}
};
clientProcess.Start();
serverProcess.WaitForExit();
clientProcess.WaitForExit();
}
else if (args[0] == "server")
{
var server = new TcpServer(12345);
server.Start();
}
else if (args[0] == "client")
{
var client = new TcpClient("localhost", 12345);
client.SendData("Hello from client!");
}
}
}
在这个示例中,我们首先检查命令行参数的数量。如果没有参数,我们启动服务器和客户端进程。如果有参数,我们根据参数值(“server"或"client”)来运行相应的代码。
这个示例展示了如何在C#中使用多进程和网络通信。你可以根据自己的需求修改这些代码,以实现更复杂的功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。