using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个Socket对象,指定协议类型为IPv4和TCP
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定到本地IP地址和端口
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 12345);
serverSocket.Bind(localEndPoint);
// 开始监听连接请求
serverSocket.Listen(10);
Console.WriteLine("服务器已启动,等待客户端连接...");
// 接受客户端连接
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("客户端已连接");
// 接收数据
byte[] buffer = new byte[1024];
int receivedBytes = clientSocket.Receive(buffer);
string receivedMessage = Encoding.UTF8.GetString(buffer, 0, receivedBytes);
Console.WriteLine($"收到消息: {receivedMessage}");
// 发送响应
string responseMessage = "Hello from server!";
byte[] responseBuffer = Encoding.UTF8.GetBytes(responseMessage);
clientSocket.Send(responseBuffer);
// 关闭连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
serverSocket.Close();
}
}
}
创建Socket对象:
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 创建一个TCP类型的Socket对象。绑定到本地IP和端口:
IPEndPoint 指定本地IP地址和端口号,并通过 Bind 方法将Socket绑定到该端点。开始监听连接请求:
Listen 方法使Socket进入监听状态,参数表示最大挂起连接数。接受客户端连接:
Accept 方法阻塞等待客户端连接,连接成功后返回一个新的Socket对象用于与客户端通信。接收数据:
Receive 方法从客户端接收数据,数据存储在字节数组中,然后使用 Encoding.UTF8.GetString 将字节数组转换为字符串。发送响应:
Send 方法向客户端发送响应消息,先将字符串转换为字节数组。关闭连接:
Shutdown 和 Close 方法关闭Socket连接。上一篇:c#winform
下一篇:c# begininvoke
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站