作者:人忒多 | 来源:互联网 | 2024-11-25 12:35
本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。
本示例展示了如何使用同步Socket在客户端与服务器之间建立通信,主要功能包括客户端发送信息至服务器,服务器接收后回传确认信息。这是一个基础的Socket编程实例,旨在帮助初学者理解Socket的工作原理。
本文将逐步介绍Socket的基本操作流程,并在后续部分讨论同步与异步Socket的不同之处及其应用场景。
以下是实现上述功能的基本步骤:
服务器端步骤:
- 根据指定的IP地址和端口号创建一个
EndPoint
对象。 - 创建一个
Socket
对象。 - 使用
Socket
对象的Bind()
方法将EndPoint
绑定到该Socket。 - 调用
Socket
对象的Listen()
方法开始监听连接请求。 - 当接收到客户端连接时,使用
Accept()
方法创建一个新的Socket
对象以处理与特定客户端的通信。 - 完成通信后,确保关闭所有打开的Socket连接。
代码示例:
using System; using System.Net; using System.Net.Sockets; using System.Text;
namespace ServerExample {
class Program {
static void Main(string[] args) {
int port = 2000;
string host = "127.0.0.1";
// 创建终结点(EndPoint)
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
// 创建Socket并开始监听
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(ipe);
s.Listen(0);
Console.WriteLine("等待客户端连接...");
// 接受客户端连接
Socket clientSocket = s.Accept();
Console.WriteLine("已建立连接。");
// 接收来自客户端的信息
byte[] buffer = new byte[1024];
int receivedBytes = clientSocket.Receive(buffer);
string receivedMessage = Encoding.ASCII.GetString(buffer, 0, receivedBytes);
Console.WriteLine("接收到的消息: {0}", receivedMessage);
// 向客户端发送确认信息
string respOnse= "消息接收成功!";
byte[] respOnseBuffer= Encoding.ASCII.GetBytes(response);
clientSocket.Send(responseBuffer);
// 关闭连接
clientSocket.Close();
s.Close();
Console.WriteLine("按任意键退出...\n");
Console.ReadKey();
}
}
}