原文:http://cao4141.blog.163.com/blog/static/6867041320100292535459/
Socket(套接字)是一种网络编程接口,一个套接字是通信的一端.它意味着Socket用来让一个进程和其他的进程互通信息,就像人们通过手机来和其他人交流一样.Socket是主要的TCP/IP网络的API之一.Socket接口定义了许多函数,开发人员可以用它们来开发TCP/IP网络的应用程序.网络的Socket数据传输是一种特殊的I/O.
套接字被使用时,都有其类型和相关进程.套接字存在于通信域中(Windows Sockets规范支持单一的通信域,即Internet域),各个进程使用该域的套接字,相互之间用Internet协议族来进行通信.套接字可以根据通信性质分类,该性质对于用户是可见的.应用程序一般仅在同一类的套接字之间通信,不过只要底层的通信协议允许,不同类型的套接字之间也可以通信.
常用的套接字有3种类型:流式套接字(SOCK-STREAM),数据报式套接字(SOCK-DGARM)和原始套接字(SOCK-RAW).
流式套接字是一种面向连接的套接字,对应于面向连接的TCP服务应用.数据报式套接字是一种无连接的套接字,对应于无连接的UDP服务应用.原始套接字对应于无连接的IP服务应用.流式套接字的使用与数据报套接字一个很大的不同:在使用流式套接字传输数据之前,必须在数据传输的发送和接收端之间建立连接,而在使用数据报套接字之前不必建立连接.在数据传输时,如果已经建立健全的连接断开,应用程序会被通知.
Socket程序设计
Socket套接字网络编程取决于客户/服务器模式.Socket提供两种形式的套接字:面向无连接的用户数据报(UDP)和面向流式传输.
1.数据报Socket使用方法
大多数的数据报应用程序使用的是比较固定的事件序列来完成客户应用程序和服务器应用程序的通信.在两通信前,无需先建立连接.首先由客户端向服务器发出数据.然后服务器通过发来的数据报就可以知道客户端的IP地址以及端口号,双方就可以通信了.其使用过程如图:
数据套接字的服务器和客户端的地位是对等的,没有明显区别.数据报无连接通信的具体实现步骤如下:
(1)使用函数Socket()用于创建一人套接字.
(2)使用函数bind()绑定本机的IP地址和端口.
(3)使用需要指定目的IP地址的函数sendto()向指定IP地址的机器发送消息.
(4)使用需要指定消息源地址的函数recfvfrom()接收来自指定地址的消息.
(5)最后使用函数closesocket或close()关闭套接字连接.
流式Socket使用方法
流式套接字使用的是基于连接的协议,所以其使用方法与数据报套接字的使用方法不同.用户在传输,接收数据之前必须首先建立连接,然后才能从数据流中读出数据,而不是从一个数据报或一个记录中读出数据.基使用方法如下:
流式套接字的服务器进程和客户进程在通信前必须使用函数Socket()创建各自的套接字,然后使用函数bind()绑定本机的IP地址和端口.服务器调用函数listen()建立一个监听端口,监听客户端请求,并调用函数accept()等待客户端的连接请求.客户端使用函数connect()用于请求与指定IP地址的服务器端口建立连接.连接建立后,客户端与服务器就可以用函数sent()和Recv()进行通信.最后调用函数closesocket()或close()关闭套接字连接.
MFC套接字编程
MFC对Windows Sockets进行了面向对象的封装.它将Windows Sockets封装成类CAsyncSocket和类CSocket,提供给开发人员一些主要的接口,而将细节屏蔽了.
(1)CAsyncSocket类封装了WindSock API函数,宏观经济提供的低级接口几乎和WindSockAPI的函数调用直接对应.
(2)CSocket类是从CAsyncSocket类派生而来的,它提供了高一级的抽象处理套接字通信.
(在MFC中使用套接字时,要在应用程序内函数InitInstance()中调用AfxSocketInit()函数业初始化套接字.即当使用应用程序向导创建程序的基本框架时,要选中"windows套接字"复选框).
分享到:
相关推荐
Java的Socket套接字编程是网络通信中的基础技术,它提供了两台计算机间低级别的连接。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心组件。本资源包含的是基于Java的Socket套接字编程的源代码...
C++基于QT与Socket套接字的邮件系统实现源码。基于QT与Socket套接字的邮件系统实现 主要实现前端界面,后端数据库,以及Csocket套接字实现通信。运行环境:Windows10 + QT 前端: Qt项目工程,呈现界面,负责处理与...
### 在MQL中操作Socket套接字 #### 概述 MQL4作为一种专为MetaTrader 4平台设计的编程语言,主要用于开发自动交易系统、技术指标和其他交易工具。然而,MQL4自身的功能集相对有限,对于需要执行更为复杂的任务(如...
Socket套接字是计算机网络编程中的一个重要概念,它提供了进程间的通信能力,使得不同设备上的应用程序可以通过网络进行数据交换。本文将深入探讨Socket通信连接的原理、步骤以及常见应用。 一、Socket概述 Socket...
网络编程中,通常使用socket套接字编程,那么该如何使用呢?接下来我们做一个最基本的小程序实现其功能。博客地址:http://blog.csdn.net/bingdianlanxin,有问题欢迎留言!
- Socket(套接字):在计算机网络中,Socket是应用程序通过网络进行通信的接口,它允许两个网络应用程序之间建立连接并进行数据传输。 - TCP/IP协议:Socket通常基于TCP/IP协议族工作,提供可靠的面向连接的通信...
Socket套接字是Java编程语言中用于网络通信的核心组件,它是实现客户端-服务器模型的基础。在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和...
基于QT与Socket套接字的邮件系统实现实现前端界面后端数据库以及Csocket套接字实现通信源码.zip基于QT与Socket套接字的邮件系统实现实现前端界面后端数据库以及Csocket套接字实现通信源码.zip基于QT与Socket套接字的...
Windows Socket 套接字编程原理 ...这篇文章详细介绍了 Windows Socket 套接字编程原理,包括客户机/服务器模式、套接字类型、套接字开发所需要的文件、数据类型的基本定义、网络地址的数据结构和套接字地址结构等。
JAVA网络编程资料(1)-Socket套接字—Java套接字编程.chm
C++开发基于QT和Socket套接字的邮件系统实现源码.zip 95分以上高分必过项目,下载即用无需修改,代码完整确保可以直接运行。 C++开发基于QT和Socket套接字的邮件系统实现源码.zip 95分以上高分必过项目,下载即用...
关于socket套接字的编程视频,内容详细,非常适合新手学习,还在等什么呢,快来观看吧。
"Socket套接字—Java套接字编程(上1)"这个资料包可能包含了关于Java套接字的基础概念、创建和使用过程,以及相关实例。下面我们将深入探讨Java中的套接字编程。 首先,Java中的Socket类是Java.io包的一部分,它提供...
Java Socket套接字是Java网络编程中的核心组件,它提供了应用程序之间进行低级通信的机制。Socket基于TCP/IP协议,允许两台计算机通过网络进行双向通信。本篇文章将深入探讨Java Socket的基础知识,包括其原理、创建...
Socket套接字是计算机网络通信中的基础概念,它允许两台或多台计算机通过网络进行数据交换。在本文中,我们将深入探讨Socket编程的核心原理、应用及其相关知识点。 首先,Socket可以被视为应用程序与网络协议栈之间...
本实例案例主要关注的是异步Socket套接字服务端的实现,这种技术在高并发、实时性要求高的应用中尤为常见。异步Socket编程允许服务器处理多个连接请求而不阻塞,从而提高系统的效率和响应速度。 首先,我们需要理解...
总的来说,Java中的Socket套接字是实现网络通信的核心工具,无论是基于TCP的稳定传输还是UDP的高效传输,都能通过Socket灵活地构建网络应用。在实际开发中,开发者应根据应用的需求和场景选择合适的通信协议,以实现...
网络socket套接字编程服务器客户端程序 精心写好的socket通信程序,实现服务器同时接受多个连接! 效果类似于ftp登录时的欢迎信息 使用正确的用户和密码登录后会看到服务器发送回来的欢迎信息! 这只是一个初稿,...