基于C#的本地服务器和客服端
下面来实现本地的服务器
首先创建一个服务器项目
1. 代码如下
先引用类库
using System.Net;
using System.Net.Sockets;
在main中实现调用
static void Main(string[] args)
{
SocketClient client = new SocketClient();
while (true)
{
string msg= Console.ReadLine();
client.Send(msg);
}
}
再写一个类SocketClient类来实现异步
代码如下
public const int bufferSize = 8192;
TcpClient client;
NetworkStream stream;
byte[] buffer = new byte[bufferSize];
public SocketClient(TcpClient _client)
{
client = _client;
Console.WriteLine("客服端链接成功" + client.Client.RemoteEndPoint);
stream = client.GetStream();
stream.BeginRead(buffer, 0, bufferSize, Read, null);
}
void Read(IAsyncResult ar)
{
try
{
int readCount = stream.EndRead(ar);
string msg = Encoding.UTF8.GetString(buffer, 0, readCount);
Console.WriteLine("接收到客服端"+client.Client.RemoteEndPoint+"消息"+msg);
lock (client)
{
Array.Clear(buffer, 0, bufferSize);
stream.BeginRead(buffer, 0, bufferSize, Read, null);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
这样就配置好了服务器
接下来实现客服端:
在创建一个项目叫做客服端Client
先引用类库
using System.Net;
using System.Net.Sockets;
在main中实现调用
static void Main(string[] args)
{
SocketClient client = new SocketClient();
while (true)
{
string msg= Console.ReadLine();
client.Send(msg);
}
}
也是再写一个SocketClient类来实现异步
class SocketClient
{
string ip = "127.0.0.1";
int port = 8500;
TcpClient client;
NetworkStream stream;
public const int bufferSize = 8192;
byte[] buffer = new byte[bufferSize];
public SocketClient()
{
client = new TcpClient();
client.Connect(ip, port);
Console.WriteLine("服务器链接成功" + client.Client.RemoteEndPoint);
stream = client.GetStream();
stream.BeginRead(buffer, 0, bufferSize, Read, null);
}
void Read(IAsyncResult ar)
{
try
{
int readCount = stream.EndRead(ar);
string msg = Encoding.UTF8.GetString(buffer, 0, readCount);
Console.WriteLine("接收到客服端" + client.Client.RemoteEndPoint + "消息" + msg);
lock (client)
{
Array.Clear(buffer, 0, bufferSize);
stream.BeginRead(buffer, 0, bufferSize, Read, null);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
public void Send(string msg)
{
byte[] bytes = Encoding.UTF8.GetBytes(msg);
stream.Write(bytes, 0, bytes.Length);
}
}
接下来
就是调用了
先打开服务器 在用Ctrl+F5来打开多个客服端:
图片1.png
接着在客服端输入信息 会分别得到。
图片2.png
这样我们就实现了本地的服务器与客服端的连接。