Appearance
Socket
Socket,翻译过来是套接字,应用于网络通信。
通信需要服务端和客户端。二者可以是一对一,一对多,多对多。
- 服务端
csharp
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace ConsoleApp1;
public class App
{
static void Main(string[] args)
{
// 创建Socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定ip、端口号
IPAddress iPAddress = new IPAddress(new byte[]{127,0,0,1});
EndPoint point = new IPEndPoint(iPAddress, 8081);
tcpServer.Bind(point);
// 开始监听
tcpServer.Listen(10);
// 闲等:等到有连接,后续的代码才会继续执行
Socket clientSocket = tcpServer.Accept();
string msg = "欢迎你";
byte[] data = Encoding.UTF8.GetBytes(msg);
// 用返回的socket跟客户端通信
clientSocket.Send(data);
// 承接客户端发来的数据
byte[] data2 = new byte[data.Length];
int length = clientSocket.Receive(data2);
string msg2 = Encoding.UTF8.GetString(data2);
Console.WriteLine(msg2);
Console.ReadKey();
}
}
- 客户端
csharp
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientEnd;
public class ClientEnd
{
static void Main(string[] args)
{
// 创建套接字
Socket tcpClient = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
// 建立连接请求
IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
EndPoint point = new IPEndPoint(iPAddress, 8081);
tcpClient.Connect(point);
// 接收数据
byte[] data = new byte[1024];
int length = tcpClient.Receive(data);
string msg = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(msg);
// 向服务器发送消息
string backMsg = Console.ReadLine();
tcpClient.Send(Encoding.UTF8.GetBytes(backMsg));
Console.ReadKey();
}
}