`

C# Socket介绍

阅读更多

本文主要结构为:【1Socket概述【2Socket实现步骤【3Socket常用方法【4】实现代码和运行结果【5】参考说明

1Socket概述

1. Microsoft.Net Framework为应用程序访问Internet提供了分层的、可扩展的以及受管辖的网络服务,其名字空间System.NetSystem.Net.Sockets包含丰富的类可以开发多种网络应用程序。System.Net.Sockets 命名空间,里面包含了Socket类。.

2. Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。

3. 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

4. 抛开ISO/OSI模型的7层构架,单从TCP/IP模型上的逻辑层面上看,.Net类可以视为包含3个层次:请求/响应层、应用协议层、传输层。WebReqeustWebResponse 代表了请求/响应层,支持HttpTcpUdp的类组成了应用协议层,而Socket类处于传输层。

2Socket实现步骤
a. 建立一个套接字
b.
绑定本机的IP和端口
c.
如果是TCP,因为是面向连接的,所以要利用ListenO()方法来监听网络上是否有人给自己发东西;如果是UDP,因为是无连接的,所以来者不拒。
d. TCP
情况下,如果监听到一个连接,就可以使用accept来接收这个连接,然后就可以利用Send/Receive来执行操作了。而UDP,则不需要accept 直接使用SendTo/ReceiveFrom来执行操作。(看清楚哦,和TCP的执行方法有区别,因为UDP不需要建立连接,所以在发送前并不知道对方的IP和端口,因此需要指定一个发送的节点才能进行正常的发送和接收)
e.
如果你不想继续发送和接收了,就不要浪费资源了。能close的就close吧。
如果看了上面文字,你还不清楚的话,就来看看图好了:

面向连接的套接字系统调用时序

无连接的套接字系统调用时序

3Socket常用方法

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 C#socket

    通过以上介绍,我们了解了C# Socket编程的基本原理和TCP连接的生命周期。在实际开发中,根据"TheacherSever"和"StudentApp"的角色,可以构建出一个简单的教学互动系统,实现客户端和服务器间的双向通信。

    C# Socket连接池

    Socket连接池是网络编程中一个重要的优化手段,它在C#中主要应用于提高网络通信的效率和稳定性。本文将深入探讨“C# Socket连接池”的实现原理、优势以及如何利用线程池技术来构建和优化它。同时,我们也会提及...

    C#Socket高并发_socket_socket并发_c#socket_C#_socket高并发_源码.zip

    本资源“C# Socket高并发_socket_socket并发_c#socket_C#_socket高并发_源码.zip”显然提供了使用C#语言进行Socket高并发编程的示例代码和实践。以下是对这个主题的详细解释: C# Socket编程: C#是微软开发的一种...

    C#Socket通信稳定完整版类库实例

    Socket通信在IT行业中是网络编程的基础,特别是在C#这样的多平台开发环境中,Socket通信库的使用至关重要。本实例,"C# Socket通信稳定完整版类库实例",为我们提供了一个全面且稳定的解决方案,用于实现客户端与...

    c# socket设置代理

    本文将深入探讨如何在C#中使用Socket类设置代理,以便进行网络通信。首先,我们需要理解Socket类的基本概念,它是网络编程的基础,允许我们通过TCP或UDP协议与远程服务器进行低级别的交互。 ### Socket类简介 ...

    c# Socket长连接 短链接 自己封装 通讯

    标题“c# Socket长连接 短链接 自己封装 通讯”揭示了我们将讨论的主题:如何使用C#实现Socket的长连接和短连接,并自定义通信协议。这里的关键点包括: 1. **Socket基础**:Socket是网络通信中的一个抽象概念,它...

    C# Socket 客户端服务端封装带使用实例

    Socket编程在IT行业中是网络通信的基础,特别是在C#这样的编程语言中,Socket接口提供了与TCP/IP协议栈直接交互的能力。本篇文章将详细讲解C#中Socket客户端和服务端的封装,以及如何利用队列处理和实际应用示例。 ...

    C# Socket 通信,客户端服务器端

    在IT行业中,网络通信是不可或缺的一部分,而C#作为.NET框架的主要编程语言,提供了强大的Socket类库用于实现网络通信。本教程将深入讲解C#中的Socket通信,包括客户端和服务器端的实现,以及如何通过源码学习相关...

    c#socket断开重连

    在IT行业中,网络通信是不可或缺的一部分,而C#语言提供了强大的Socket编程接口,...在提供的`c#Socket断开重连.cs`源代码文件中,应包含这些功能的具体实现,读者可以通过阅读和分析代码来深入理解相关概念和技术。

    c# socket 传输文件

    在C#编程中,Socket是网络通信的基础组件,它...以上内容详细介绍了C#中使用Socket进行文件传输的基本步骤、关键技术和注意事项。实际开发中,可能还需要结合多线程、网络编程模式等高级话题,以适应不同场景的需求。

    C# socket封装类和组件含例程全部开源

    在.NET编程环境中,C#语言提供了丰富的库支持网络通信,其中Socket是进行低级网络通信的基本组件。本资源“C# socket封装类和组件含例程全部开源”提供了一套全面且强大的C# Socket封装,旨在简化开发过程,提高代码...

    C#raw Socket编程

    C#raw Socket编程 C#raw Socket编程是指使用C#语言实现原始套接字(Raw Socket)的编程技术。原始套接字是一种网络编程接口,允许开发者在应用层实现网络封包监视和控制。 Windows Sockets 是一种网络编程接口,...

    C# socket异步长连接

    本文将深入探讨"C# socket异步长连接"这一主题,包括其概念、工作原理以及如何在实际开发中实现。 首先,我们要理解什么是Socket。Socket是网络通信中的一个接口,它允许应用程序通过TCP/IP协议与另一台计算机进行...

    C#socket 大文件传输 分段传输 C#DEMO

    C#socket 大文件传输 分段传输 C#DEMO

    c# socket 通信demo 亲测可用,断开连接事件

    本示例着重介绍如何在C#中使用Socket进行通信,并处理断开连接的事件以及实现重连功能。 首先,我们需要导入`System.Net.Sockets`命名空间,这是C#中Socket类的所在位置。下面我们将详细解析整个通信过程: 1. **...

    C# Socket通讯/TCP通讯,完整代码demo

    Socket编程在IT行业中是网络通信的基础,特别是在C#这样的编程语言中,Socket是实现TCP通讯的重要工具。本示例提供了一个完整的C# Socket通讯/TCP通讯的代码demo,旨在帮助开发者理解和应用网络通信技术。 首先,...

    c# Socket 多线程 分包 发送/接受数据

    在C#中,Socket编程是网络通信的基础,它允许应用程序通过网络进行数据传输。多线程和分包技术则是提高程序并发性和优化数据处理的有效手段。以下是对标题和描述中涉及的知识点的详细解释: 1. **C# Socket**: C#...

    利用C# Socket 实现HTTP WEB服务器

    在本文中,我们将深入探讨如何使用C#编程语言和Socket技术来实现一个基本的HTTP Web服务器。C#是一种面向对象的、类型安全的编程语言,广泛应用于Windows平台上的应用程序开发,包括网络服务。Socket是网络通信的...

    C# Socket通讯DEMO

    本文将深入探讨“C# Socket通讯DEMO”中的关键知识点,包括Socket的基本概念、C#中Socket的使用、服务端与客户端的构建,以及如何实现简单的聊天功能。 1. **Socket基础**: Socket,通常被称为套接字,是网络通信...

    C#Socket文件传输简单例子(将文件名和文件同时传输)

    在C#编程中,Socket是网络通信的基本组件,它提供了进程间、网络间的数据传输能力。本示例主要探讨如何使用C#的Socket类进行文件的传输,包括文件名和文件内容的同步发送与接收。这里我们将详细讲解实现这一功能的...

Global site tag (gtag.js) - Google Analytics