本文主要结构为:【1】Socket概述【2】Socket实现步骤【3】Socket常用方法【4】实现代码和运行结果【5】参考说明
【1】Socket概述
1. Microsoft.Net Framework为应用程序访问Internet提供了分层的、可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序。System.Net.Sockets 命名空间,里面包含了Socket类。.
2. Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。
3. 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
4. 抛开ISO/OSI模型的7层构架,单从TCP/IP模型上的逻辑层面上看,.Net类可以视为包含3个层次:请求/响应层、应用协议层、传输层。WebReqeust和WebResponse 代表了请求/响应层,支持Http、Tcp和Udp的类组成了应用协议层,而Socket类处于传输层。
【2】Socket实现步骤
a. 建立一个套接字
b. 绑定本机的IP和端口
c. 如果是TCP,因为是面向连接的,所以要利用ListenO()方法来监听网络上是否有人给自己发东西;如果是UDP,因为是无连接的,所以来者不拒。
d. TCP情况下,如果监听到一个连接,就可以使用accept来接收这个连接,然后就可以利用Send/Receive来执行操作了。而UDP,则不需要accept, 直接使用SendTo/ReceiveFrom来执行操作。(看清楚哦,和TCP的执行方法有区别,因为UDP不需要建立连接,所以在发送前并不知道对方的IP和端口,因此需要指定一个发送的节点才能进行正常的发送和接收)
e.如果你不想继续发送和接收了,就不要浪费资源了。能close的就close吧。
如果看了上面文字,你还不清楚的话,就来看看图好了:
面向连接的套接字系统调用时序
无连接的套接字系统调用时序
【3】Socket常用方法
Socket.Connect方法:建立到远程设备的连接
public void Connect(EndPoint remoteEP)(有重载方法)
Socket.Send 方法:从数据中的指示位置开始将数据发送到连接的 Socket。
public int Send(byte[], int, SocketFlags);(有重载方法)
Socket.SendTo 方法 将数据发送到特定终结点。
public int SendTo(byte[], EndPoint);(有重载方法)
Socket.Receive方法:将数据从连接的 Socket 接收到接收缓冲区的特定位置。
public int Receive(byte[],int,SocketFlags);
Socket.ReceiveFrom方法:接收数据缓冲区中特定位置的数据并存储终结点。
public int ReceiveFrom(byte[], int, SocketFlags, ref EndPoint);
Socket.Bind 方法:使 Socket 与一个本地终结点相关联:
public void Bind( EndPoint localEP );
Socket.Listen方法:将 Socket 置于侦听状态。
public void Listen( int backlog );
Socket.Accept方法:创建新的 Socket 以处理传入的连接请求。
public Socket Accept();
Socket.Shutdown方法:禁用某 Socket 上的发送和接收
public void Shutdown( SocketShutdown how );
Socket.Close方法:强制 Socket 连接关闭
public void Close();
【4】实现代码和运行结果(TCP为例)
1.Socket服务器
2.Socket客户端
【5】参考说明
1. http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html
2. http://blog.csdn.net/JavaProgramers/archive/2008/02/20/2108460.aspx
分享到:
相关推荐
通过以上介绍,我们了解了C# Socket编程的基本原理和TCP连接的生命周期。在实际开发中,根据"TheacherSever"和"StudentApp"的角色,可以构建出一个简单的教学互动系统,实现客户端和服务器间的双向通信。
Socket连接池是网络编程中一个重要的优化手段,它在C#中主要应用于提高网络通信的效率和稳定性。本文将深入探讨“C# Socket连接池”的实现原理、优势以及如何利用线程池技术来构建和优化它。同时,我们也会提及...
本资源“C# Socket高并发_socket_socket并发_c#socket_C#_socket高并发_源码.zip”显然提供了使用C#语言进行Socket高并发编程的示例代码和实践。以下是对这个主题的详细解释: C# Socket编程: C#是微软开发的一种...
Socket通信在IT行业中是网络编程的基础,特别是在C#这样的多平台开发环境中,Socket通信库的使用至关重要。本实例,"C# Socket通信稳定完整版类库实例",为我们提供了一个全面且稳定的解决方案,用于实现客户端与...
本文将深入探讨如何在C#中使用Socket类设置代理,以便进行网络通信。首先,我们需要理解Socket类的基本概念,它是网络编程的基础,允许我们通过TCP或UDP协议与远程服务器进行低级别的交互。 ### Socket类简介 ...
标题“c# Socket长连接 短链接 自己封装 通讯”揭示了我们将讨论的主题:如何使用C#实现Socket的长连接和短连接,并自定义通信协议。这里的关键点包括: 1. **Socket基础**:Socket是网络通信中的一个抽象概念,它...
Socket编程在IT行业中是网络通信的基础,特别是在C#这样的编程语言中,Socket接口提供了与TCP/IP协议栈直接交互的能力。本篇文章将详细讲解C#中Socket客户端和服务端的封装,以及如何利用队列处理和实际应用示例。 ...
在IT行业中,网络通信是不可或缺的一部分,而C#作为.NET框架的主要编程语言,提供了强大的Socket类库用于实现网络通信。本教程将深入讲解C#中的Socket通信,包括客户端和服务器端的实现,以及如何通过源码学习相关...
在IT行业中,网络通信是不可或缺的一部分,而C#语言提供了强大的Socket编程接口,...在提供的`c#Socket断开重连.cs`源代码文件中,应包含这些功能的具体实现,读者可以通过阅读和分析代码来深入理解相关概念和技术。
在C#编程中,Socket是网络通信的基础组件,它...以上内容详细介绍了C#中使用Socket进行文件传输的基本步骤、关键技术和注意事项。实际开发中,可能还需要结合多线程、网络编程模式等高级话题,以适应不同场景的需求。
在.NET编程环境中,C#语言提供了丰富的库支持网络通信,其中Socket是进行低级网络通信的基本组件。本资源“C# socket封装类和组件含例程全部开源”提供了一套全面且强大的C# Socket封装,旨在简化开发过程,提高代码...
C#raw Socket编程 C#raw Socket编程是指使用C#语言实现原始套接字(Raw Socket)的编程技术。原始套接字是一种网络编程接口,允许开发者在应用层实现网络封包监视和控制。 Windows Sockets 是一种网络编程接口,...
本文将深入探讨"C# socket异步长连接"这一主题,包括其概念、工作原理以及如何在实际开发中实现。 首先,我们要理解什么是Socket。Socket是网络通信中的一个接口,它允许应用程序通过TCP/IP协议与另一台计算机进行...
C#socket 大文件传输 分段传输 C#DEMO
本示例着重介绍如何在C#中使用Socket进行通信,并处理断开连接的事件以及实现重连功能。 首先,我们需要导入`System.Net.Sockets`命名空间,这是C#中Socket类的所在位置。下面我们将详细解析整个通信过程: 1. **...
Socket编程在IT行业中是网络通信的基础,特别是在C#这样的编程语言中,Socket是实现TCP通讯的重要工具。本示例提供了一个完整的C# Socket通讯/TCP通讯的代码demo,旨在帮助开发者理解和应用网络通信技术。 首先,...
在C#中,Socket编程是网络通信的基础,它允许应用程序通过网络进行数据传输。多线程和分包技术则是提高程序并发性和优化数据处理的有效手段。以下是对标题和描述中涉及的知识点的详细解释: 1. **C# Socket**: C#...
在本文中,我们将深入探讨如何使用C#编程语言和Socket技术来实现一个基本的HTTP Web服务器。C#是一种面向对象的、类型安全的编程语言,广泛应用于Windows平台上的应用程序开发,包括网络服务。Socket是网络通信的...
本文将深入探讨“C# Socket通讯DEMO”中的关键知识点,包括Socket的基本概念、C#中Socket的使用、服务端与客户端的构建,以及如何实现简单的聊天功能。 1. **Socket基础**: Socket,通常被称为套接字,是网络通信...
在C#编程中,Socket是网络通信的基本组件,它提供了进程间、网络间的数据传输能力。本示例主要探讨如何使用C#的Socket类进行文件的传输,包括文件名和文件内容的同步发送与接收。这里我们将详细讲解实现这一功能的...