C Socket实现简单控制台案例
更新时间:2023-11-11引言
Socket编程是一种网络编程模型,可以使用它来实现基础的网络通信。使用Socket你可以编写服务器,客户端或者是两者兼备的程序。C#中原生支持Socket编程,用于构建基于TCP或UDP协议的网络连接。在这个案例中,我们将解释如何使用C# Socket库实现简单的控制台程序。代码
首先,我们需要打开Visual Studio并创建控制台应用程序。创建完成后,我们就可以开始编写代码。下面是服务器端代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketServerDemo
{
class Program
{
static void Main(string[] args)
{
byte[] bytes = new Byte[1024];
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8080);
try
{
Socket listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
while (true)
{
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
Console.WriteLine($"Connection from {handler.RemoteEndPoint}");
string data = null;
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
if (data.IndexOf("") > -1)
{
break;
}
}
Console.WriteLine($"Received: {data}");
byte[] msg = Encoding.ASCII.GetBytes("ACK");
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
上述代码演示了如何使用C# Socket库创建一个服务器。它会监听端口8080,等待客户端连接。一旦客户端连接成功,服务器就会读取从客户端发来的数据,并将其转成字符串,最后回发一个“ACK”指示成功接收到该消息。
接下来,我们需要编写客户端代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketClientDemo
{
class Program
{
static void Main(string[] args)
{
byte[] bytes = new byte[1024];
try
{
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, 8080);
Socket sender = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(remoteEndPoint);
Console.Write("Enter message: ");
string message = Console.ReadLine();
byte[] msg = Encoding.ASCII.GetBytes(message + "");
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes);
Console.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytesRec));
sender.Shutdown(SocketShutdown.Both);
sender.Close();
}
catch (SocketException sex)
{
Console.WriteLine(sex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
客户端代码首先创建一个表示服务器IP地址和端口的IPEndPoint对象。然后,相应的Socket对象被创建和连接。最后,客户端将要发送给服务器的数据作为字符串被读取,并在其末尾加上“
总结
本案例演示了如何使用C# Socket库实现简单的控制台程序,包括服务器代码和客户端代码。通过这个案例,你应该已经学会如何使用C# Socket库来创建基于TCP协议的网络连接。
总之,Socket编程可以让你实现多种不同类型的网络应用程序,包括聊天室程序、文件传输应用程序、视频聊天应用程序等等。如果你对网络编程感兴趣,Socket编程一定值得一试。