Socket(套接字)是一种独立于协议的网络编程接口,在OSI模型中,主要集中于会话层和传输层。Socket 实际上代表的是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口可以有多个连接。通过socket客户/服务器编程可以创建一个能被许多人使用的分布式程序,并且所有客户均可以用统一的前端进行工作,并与服务器进行通信。这与老式或新式电话机之间的通话过程是十分相似的。
在.NET中,System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现。Socket 类为网络通信提供了一套丰富的方法和属性。
如果应用程序在执行期间只需要一个线程,请使用下面的方法,这些方法适用于同步操作模式。
如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。Accept 方法处理任何传入的连接请求,并返回可用于与远程主机进行数据通信的 Socket。可以使用此返回的 Socket 来调用 Send 或 Receive 方法。如果要指定本地 IP 地址和端口号,请在调用 Listen 方法之前先调用 Bind 方法。如果不调用 Bind,基础服务提供程序将为您分配这些值。此后,可以使用 LocalEndPoint 属性来标识分配给 Socket 的 IP 地址和端口号。如果想连接到侦听主机,请调用 Connect 方法。若要进行数据通信,请调用 Send 或 Receive 方法。
如果当前使用的是无连接协议(如 UDP),则根本不需要侦听连接。调用 ReceiveFrom 方法可接受任何传入的数据报。使用 SendTo 方法可将数据报发送到远程主机。
开发一个简单的同步网络聊天程序程序分为服务器和客户端。连接成功后,服务器和客户端之间可以进行对话。源码中对每一个涉及到的对初学者较难理解的类方法属性都有详细的注释。以下是服务器端代码。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
namespace 聊天_socket
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
实例解析SOCKET编程模型(-)
时间: 2024-11-16 10:26:42
实例解析SOCKET编程模型(-)的相关文章
续实例解析SOCKET编程模型之异步通信篇(上)
编程|异步 .NET 框架的 Socket 类实际上是 Winsock32 API 提供的套接字服务的托管代码版本.其中Socket 类为网络通信提供了一套丰富的方法和属性,大多数情况下,Socket 类方法只是将数据封送到它们的本机Win32 副本中并处理任何必要的安全检查.Socket 类允许使用 ProtocolType 枚举中所列出的任何一种协议执行异步和同步数据传输.Socket 类遵循异步方法的 .NET Framework 命名模式:例如,同步 Receive 方法对应于异步 Be
续实例解析SOCKET编程模型之异步通信篇(下)
编程|异步 异步客户端套接字在等待网络操作完成时不挂起应用程序.相反,它使用标准 .NET Framework 异步编程模型在一个线程上处理网络连接,而应用程序继续在原始线程上运行.异步套接字适用于大量使用网络或不能等待网络操作完成才能继续的应用程序. Socket 类遵循异步方法的 .NET Framework 命名模式:例如,同步 Receive 方法对应异步 BeginReceive 和 EndReceive 方法. 异步操作要求回调方法返回操作结果.如果应用程序不需要知道结果,则不需要任
实例解析SOCKET编程模型(二)
以下是同步聊天程序的客户端源代码.其中的一些过程可以参考服务器端源码using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Net;using System.Net.Sockets;using System.Threading;using System.Text;n
深入浅出php socket编程_php实例
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.什么是TCP/IP.UDP? 2.Socket在哪里呢? 3.Socket是什么呢? 4.你会使用它们吗? 什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的. UDP(User Data Protocol
Python Socket 编程——聊天室示例程序
原文:Python Socket 编程--聊天室示例程序 上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 图来自:http://www.ibm.com/de
struts2的select标签用法实例分析_JSP编程
本文实例讲述了struts2的select标签用法.分享给大家供大家参考.具体如下: 项目中遇到个小问题,总结下. 关于struts2 select标签的使用. struts2 中从别的表中遍历数据 填充进入下拉菜单 用<s:select>标签显示. struts2的版本为2.1.8 <s:select list="" name="" value="" headerKey=&quo
C++设计模式编程中Facade外观模式的使用实例解析_C 语言
外观模式提供了一个统一的接口,用来访问子系统的一群接口.外观定义了一个高层接口,让子系统更容易使用.外观模式让接口变得简单,简化了子系统的接口.外观模式十分简单,简而言之,就是简化你的类的接口,将一系列的复杂的过程封装到内部,对外只提供最简单的接口.结构图: 适用场景:当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越复杂.大多数模式使用时都会产生更多更小的类.这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难.F
实例解析C++设计模式编程中简单工厂模式的采用_C 语言
简单工厂模式中专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.它又称为静态工厂方法模式,属于类的创建型模式. 简单工厂模式的UML类图 简单工厂模式的程序通过封装继承来降低程序的耦合度,设计模式使得程序更加的灵活,易修该,易于复用. 简单工厂是在工厂类中做判断,从而创造相应的产品. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 该模式中包含的角色及其职责 1.工厂(Creator)角色
解析C语言基于UDP协议进行Socket编程的要点_C 语言
两种协议 TCP 和 UDP前者可以理解为有保证的连接,后者是追求快速的连接. 当然最后一点有些 太过绝对 ,但是现在不需熬考虑太多,因为初入套接字编程,一切从简. 稍微试想便能够大致理解, TCP 追求的是可靠的传输数据, UDP 追求的则是快速的传输数据. 前者有繁琐的连接过程,后者则是根本不建立可靠连接(不是绝对),只是将数据发送而不考虑是否到达. 以下例子以 *nix 平台的便准为例,因为 Windows平台需要考虑额外的加载问题,稍作添加就能在 Windows 平台上运行UDP. UD