下面我将为你详细讲解“c#(Socket)同步套接字代码示例”的完整攻略。
1. 概述
在讲解c#(Socket)同步套接字代码示例前,我们需要先了解一下Socket的概念。Socket可以理解为应用程序之间的通信机制,其基本原理是通过一个IP地址和端口号来定位网络上的某个服务进程,然后通过传输控制协议(TCP)或用户数据报协议(UDP)来实现进程之间的通信。
在C#中,我们可以通过使用System.Net.Sockets命名空间下的Socket类来实现Socket通信功能。为了实现同步通信,我们需要使用Socket类提供的同步阻塞方法。下面,我将为你介绍一些常用的同步阻塞方法及其用法。
2. Socket类同步阻塞方法
(1)Socket.Accept()方法:该方法用于接收来自客户端的连接,当该方法被调用时,程序将会阻塞,直到有客户端请求连接。
下面是一个简单的代码示例:
using System;
using System.Net;
using System.Net.Sockets;
class ServerSocket
{
static void Main(string[] args)
{
IPAddress ipAddr = IPAddress.Parse("192.168.0.100");
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ipAddr, 8080));
serverSocket.Listen(10);
Console.WriteLine("Server started, waiting for client...");
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("Client connected!");
clientSocket.Close();
serverSocket.Close();
}
}
该示例代码中,我们创建了一个本地IP地址为192.168.0.100、端口号为8080的Socket服务端套接字,然后使用serverSocket.Listen(10)方法将服务端套接字设置为监听模式,在clientSocket = serverSocket.Accept()方法被调用后,程序会被阻塞,直到有客户端连接到该服务端套接字,程序才会继续执行。被接受的Socket客户端套接字将被赋值给clientSocket变量,程序打印出“Client connected!”表示成功接受客户端连接,然后关闭客户端套接字和服务端套接字。
(2)Socket.Connect()方法:该方法用于连接到远程主机,当该方法被调用时,程序将会阻塞,直到连接成功或者失败。
下面是一个简单的代码示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class ClientSocket
{
static void Main(string[] args)
{
IPAddress ipAddr = IPAddress.Parse("192.168.0.100");
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(ipAddr, 8080));
Console.WriteLine("Connected to server, please input something:");
string message = Console.ReadLine();
byte[] sendBytes = Encoding.ASCII.GetBytes(message);
clientSocket.Send(sendBytes);
byte[] recvBytes = new byte[1024];
int bytesReceived = clientSocket.Receive(recvBytes);
Console.WriteLine($"Received {bytesReceived} bytes from server: {Encoding.ASCII.GetString(recvBytes, 0, bytesReceived)}");
clientSocket.Close();
}
}
该示例代码中,我们创建了一个本地IP地址为192.168.0.100、端口号为8080的Socket客户端套接字,然后使用clientSocket.Connect()方法连接到该IP地址和端口号对应的服务端套接字。被连接到的Socket服务端套接字将会接收来自客户端套接字的信息,使用clientSocket.Send()方法向服务端发送信息,并使用clientSocket.Receive()方法接收服务端发送回来的信息。程序最终打印服务端发送回来的信息,并关闭客户端套接字。
3. 总结
通过上述两个Socket同步套接字代码示例,我们可以了解到在C#中如何实现Socket的同步阻塞通信。使用Socket类提供的相关方法,我们可以方便地实现客户端和服务端之间的通信。希望这些示例对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#(Socket)同步套接字代码示例 - Python技术站