Unix02_UNIX网络编程介绍

Unix02_UNIX网络编程介绍

ID:41032491

大小:78.00 KB

页数:12页

时间:2019-08-14

Unix02_UNIX网络编程介绍_第1页
Unix02_UNIX网络编程介绍_第2页
Unix02_UNIX网络编程介绍_第3页
Unix02_UNIX网络编程介绍_第4页
Unix02_UNIX网络编程介绍_第5页
资源描述:

《Unix02_UNIX网络编程介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、UNIX网络编程入门Unix是计算机使用的主流操作系统之一,TCP/IP是广为应用的互连网协议,Unix为TCP/IP网络编程提供了一种网络进程通信机制:套接字接口(SocketsInterface)。本文将介绍Unix环境下套接字的基本概念及编程技术,并结合实例说明在Unix下如何用套接字实现客户机/服务器方式的进程通信。一、套接字简介套接字(Socket)是网络通信的基本操作单元,它提供了不同主机间进程双向通信的端点,这些进程在通信前各自建立一个Socket,并通过对Socket的读/写操作实现网络通信功能。套接字分为以下3种类型。1.字节流套接字这是最常用的套接字类型

2、,TCP/IP协议簇中的TCP(TransportControlProtocol)协议使用此类接口,它提供面向连接的(建立虚电路)、无差错的、发送先后顺序一致的、包长度不限和非重复的网络信包传输。2.数据报套接字TCP/IP协议族中的UDP(UserDatagramProtocol)协议使用此类接口,它是无连接的服务,以独立的信包进行网络传输,信包最大长度为32KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。3.原始数据报套接字提供对网络下层通讯协议(如IP协议)的直接访问,它一般不是提供给普通用户的,主要用于开发新的协议或用于提取协议

3、较隐蔽的功能。二、套接字系统调用附表是Unix中套接字系统调用的简单说明。附表三、套接字编程方法这里将分别介绍面向连接协议的字节流套接字与非连接协议的数据报套接字的编程方法,因原始数据报套接字在实际工作中使用较少,在此不作讨论。不论何种套接字编程均采用客户机/服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请求的任务并将结果返回给客户进程。字节流套接字的服务进程和客户进程在通信前必须建立连接。建立连接及通信的步骤见图1。1.服务进程首先调用Socket()创建一个字节流套接字,并调用bind()将服务器地址捆扎在该套接字上,接着调用listen()监听连

4、接请求,随后调用accept()做好与客户进程建立连接的准备,无连接请求时,服务进程被阻塞;2.客户进程调用Socket()创建字节流套接字,然后调用connect()向服务进程发出连接请求;3.当连接请求到来后,服务进程被唤醒,生成一个新的字节流套接字,并用新套接字同客户进程的套接字建立连接,而服务进程最早生成的套接字则继续用于监听网络上的服务请求4.服务进程和客户进程通过调用read()和write()交换数据;5.服务进程和客户进程通过调用close()撤消套接字并中断连接。图1面向连接协议的字节流套接字系统调用图2非连接协议的报套接字系统调用数据套接字的服务进程客户

5、进程通信前不必建立连接,通信的步骤见图2。1.服务进程首先调用Socket()创建一个数据套接字,并调用bind()将服务器地址捆扎在该套接字上,然后调用recvfrom()等待客户进程发来的请求;2.客户进程在调用Socket()创建一个数据报套接字后,调用bind()将客户机地址捆扎在此套接字上,接着调用sendto()向服务进程发送请求,然后调用recvfrom()等待服务进程返回该请求的处理结果;3.服务进程在执行客户进程所请求的任务后,调用sendto()将处理结果返回给客户进程4.服务进程和客户进程通过调用close()撤消套接字。UNIX网络编程入门之二 UN

6、IX网络编程入门四、套接字编程示例下面给出一个运用字节流套接字在TCP/IP网络上实现客户机/服务器方式进程通信的实例。在此例中,服务进程先于客户进程运行,当双方建立连接后,服务进程通过该连接向客户进程不断发送一个连续增长的序列数,客户进程每接收到50个序列数就在屏幕上显示一个‘.',显示至20个点后换行,直至任意一方进程被中断为止。/******server.c******/#include#include#include#include#includemain(){intsock,namelen,seq,netint;structsockaddr-inserver;//

7、存服务器的internet地址charmsgsock;charbuf[1024];//创建internet域的TCP协议的字节流套接字sock=socket(AF-INET,SOCK-STREAM,IPPROTO-TCP);if(sock#include#include#include#includemain(argc,argv)intargc;char*argv[];{intsock,myseq,recvseq;structsockaddr-inserver;//存服务器的internet地址structhost

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。