C++builder中基于SOCKET-的网络编程_第1页
C++builder中基于SOCKET-的网络编程_第2页
C++builder中基于SOCKET-的网络编程_第3页
C++builder中基于SOCKET-的网络编程_第4页
C++builder中基于SOCKET-的网络编程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Socket编程摘要:TCP/IP网络环境下的应用程序是通过网络系统编程接口socket实现的,本文以C+builder为编程语言,说明了在Windows下基于SOCKET的网络编程原理和实现技术。 关键词:C+builder;套接字(socket);客户机服务器(CS) 一、概述 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯,它的基本模型就是客户机/服务器模型,即两个进程之间相互通讯,其中一个提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系,然后完成数据的通讯就可以了,这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。 二、网络的基本概念 (一)客户机/服务器模式 客户机/服务器模型是网络应用的标准模型,这种模式将网络中的计算机分成两类:提出服务请求的一方称为客户机,提供服务的一方称为服务器,客户机/服务器是个逻辑概念,客户机部分和服务器部分可以在同一物理机器上,也可在不同的物理机器上,与单机模式相比,客户机/服务器模式可以使得负载在客户机和服务器之间平衡,增强了系统的稳定性和灵活性,使系统便于维护和应用。 网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,客户机与服务器分别表示相互通信的两个应用程序的进程,客户机服务器模式通常采用监听连接的方式实现,客户机进程是主动的,先发出请求给服务器,服务器端应用程序在一个端口监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到有一个客户机对这个服务提出了连接请求,此时服务线程被“唤醒”并为客户提供服务,即对客户的请求做出适当的反应。 (二)TCP/IP协议 TCP/IP(Transmission Control Protocol/Internet Protocol)协议又叫网络通讯协议,中文译名为传输控制协议/因特网互联协议,由专门负责对不同网络进行互联的互联网协议IP协议和用来检测网络传输中差错的传输控制协议TCP协议组成,该协议是因特网最基本的协议,也是国际互联网络的基础。TCP/IP 协议定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP是一个四层的分层体系结构,每一层都呼叫它的下一层提供的网络来完成自己的需求。包括应用层、传输层、网络层、网络接口层,如下图: 应用层 (Telnet、FTP、HTTP、DNS、SMTPT等) 传输层 (TCP和UDP) 网络层 (IP、ICMP和IGMP) 网络接口层 (以太网、令牌环网、FDDI等) 应用层:应用程序间沟通的层。该层的协议主要有电子邮件传输协议(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:该层是整个体系结构的控制部分,提供应用程序之间端到端的通讯服务。该层定义了两种协议:传输控制协议(TCP)、用户数据报协议等(UDP)。 网络层:负责提供基本的数据包传送功能,让每一块数据包都能达到目的主机。该层主要包括网际协议(IP)、互联网控制报文协议(ICMP)、Internet组管理协议(IGMP)。 网络接口层:也叫数据链路层,是模型的最底层,负责将帧放入线路或从线路中取出帧。 (三)套接字(Socket) 套接字(Socket)是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,它定义了两台计算机间的通信规范,Socket是面向CS模型来设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,Socket通常用来实现客户端和服务器端的连接。Socket屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了Socket规范的计算机之间的通信成为可能。 要建立一个Socket连接必须具有四个基本信息:本地系统的地址、本地应用程序使用的端口号、远程系统的地址、远程系统中应用程序使用的端口号。具体实现时,首先服务器进程在约定的端口建立一个Socket并处于监听状态等待客户机连接;客户机建立一个Socket并向服务器端发送连接请求;服务器端接受客户机请求并与客户机建立连接;客户机向服务器发送服务请求;服务器端接受客户机服务请求处理后予以响应。如下图: 三、C+builder环境下的网络编程 C+builder中,网络组件TServerSocket和TClientSocket封装了WinSocket编程的各种基本功能,使网络编程更加简单。其中,TClientSocket作为客户端使用,是请求方,主动和服务器进程建立联接;TServerSocket作为服务器方使用,是响应方,用于侦听以及被动接受客户机的联接。 (一)服务器端的实现 1.创建服务套接字和监听线程 void _fastcall ServerSocketListen(TObject *Sender) TServerSocket * SocketServer; int agreed_Port; SocketServer = new TServerSocket(Application); SocketServer -Port = agreed_Port ;/约定的端口 SocketServer - Open (); if(SocketServer -Active )ShowMessage(“开始监听”); 2.实现数据接收 当有客户连接时,在TServerSocket的onaccept事件中添加如下代码 void _fastcall TServerSocket:onaccept (TObject* Sender, TCustomWinSocket * Socket) TList *SocketList; SocketList = new TList; TAcceptSocket *AcceptSocket = new TAcceptSocket(Socket); SocketList-Add(AcceptSocket); ShowMessage(“有客户连接”); 当有客户数据发送时,在TServerSocket的OnClientRead事件中加入以下代码: void _fastcall TServerSocket: OnClientRead (TObject* Sender, TCustomWinSocket * Socket) intDataLen; char Recv_Buffer 80000; Char * Buffer; DataLen = Socket-ReceiveLength(); /接受数据到Recv_buffer缓冲区中 Socket-ReceiveBuf( Recv_Buffer, DataLen ) /给每一个连接客户发送数据 for(i=0;iSocket-ActiveConnections;i+) ServerSocket-Socket-Connectionsi- SendBuf(void*)Buffer,sizeof(Buffer); 3.关闭套接字 void _fastcall Disconnect(TObject* Sender) SocketServer- Close(); (二)客户机端的实现 1.创建客户机端的套接字并与服务器建立连接 void _fastcall ClientSocketConnect(TObject *Sender) TClientSocket * SocketClient; AnsiStringServer_IP; int agreed_Port; Char * Buffer; SocketClient = new TClientSocket(Application); SocketClient -ClientType = ctNonBlocking; SocketClient -OnRead=readdata; SocketClient -Address= Server_IP;/服务器地址 SocketClient -Port = agreed_Port ;/约定的端口 SocketClient - Open(); if(SocketClient -Active ) ShowMessage(“连接成功”); /发送数据 SocketClient -Socket-SendBuf(void*)Buffer,sizeof(Buffer);/ 2.实现数据接收 void _fastcall readdata (TObject* Sender, TCustomWinSocket* Socket) intDataLen; char Recv_Buffer 80000; DataLen = Socket-ReceiveLength(); /接受数据到Recv_buffer缓冲区中 Socket-ReceiveBuf( Recv_Buffer, DataLen ); 3.关闭套接字 同服务器端。 四、结束语 本文以C+builder语言为例,重点介绍了利用Socket编程的技术要点,目前,大多数远程进程间通信代码是用Socket编写的,socket 最初是由加利福尼业大学Berkeley 分校为UNIX 操作系统开发的网络通信接口,而现在几乎所有流行的操作系统都支持它,从而使得socket成为开发网络应用软件的强有力工具。 参考文献: 1袁辉.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论