关于Socket编程的相关资料(含实例)在网上多如牛毛,而我写这篇文章的初衷仅仅是为了记录自己的一些心得体会。 Socket提供了这样一个接口,可以方便地使程序员通过其来发送和接收网络上的数据。在利用Socket编程的时候,首先需要使用指定的地址族(如常见的IPV4或IPV6)、套接字类型(如Stream、Dgram等)和协议(如Tcp、Udp等)初始化Socket类的新实例,然后需要与IP地址和端口绑定。这些都是使用Socket编程的最基本条件。 Socket编程通常分服务器和客户端,服务器端负责接收客户端请求并处理该请求,必须具备多客户端处理能力,在性能要求、稳定性等方面要求较高,客户端在连接上服务器后向服务器发送数据或接收来自服务器的数据,之后进行处理,相对简单。 在服务器端,以TCP通信为例,Socket实现网络通信的基本思路是: 1、建立流式套接字并返回套接字号,如:m_serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 2、将套接字与本地地址相连,如:m_serverSocket.Bind(m_localEndPoint); 3、开始侦听客户端连接请求 4、等待客户端连接 5、客户端与服务器建立连接,得到新的套接字,如clientSocket = m_serverSocket.Accept(); 6、在套接字上读写数据,直到完成数据交换 7、与指定客户端的服务完成后,关闭该客户端的套接字 8、关闭服务器,如m_serverSocket.Close(); 其中在服务器运行期间,第4到第7步是一个循环的过程,每一个客户端会话进来都走相同的处理模式。 在客户端,也以TCP通信为例,Socket实现网络通信的基本思路是: 1、建立流式套接字并返回套接字号,如:m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 2、将套接字与远程主机(即服务器)进行连接,如:m_serverEndPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);m_clientSocket.Connect(m_serverEndPoint); 3、如果连接成功,则开始接收来自服务器端的数据,如: if (m_clientSocket.Connected) { m_clientSocket.BeginReceive(m_receiveBuffer, 0, m_receiveBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null); } 4、根据需要,向服务器发送数据,如:m_clientSocket.Send(m_sendBuffer, m_sendBuffer.Length, SocketFlags.None); 5、关闭套接字
时间: 2024-10-06 19:32:13