第 8 章 网络程序设计.

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
1 实验二、 TCP 、 UDP 通信程序设计实验 ——TCP 通信实验 注意 bind 和 listen socket() bind() listen() accept() write() read() TCP Server read() socket() TCP Client connect()
NAT与ICMP交互.
计算机网络教程 任课教师:孙颖楷.
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
淄博信息工程学校 ZIBOIT&ENGINEERING VOCATONAL SHCOOL 03 交换机干道技术 计算机网络技术专业.
第十讲 网络通信 1、网络基本概念 2、Java与Internet 3、使用InetAddress 4、使用URL 5、Socket通信
第9章 网络通信 1.
TCP/IP Socket网络编程.
项目四 组建跨地区网络 授课教师:肖颖.
第八课 TCP/IP协议.
TCP Session Hijack 郭军权
Socket.
实验4 基于Socket的C/S程序开发 实验目的
在PHP和MYSQL中实现完美的中文显示
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
TCP、UDP 通信实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第12章 嵌入式系统的应用程序开发.
Socket 基本觀念.
第14章 Java网络编程 Java语言提供了强大的网络编程功能,能够处理各种网络资源以及进行网络通信。java.net包定义了Java语言网络编程的主要工具类。其中,包括代表网络IP地址的InetAddress类;与URL有关的URL类和URLConnection类;与网络通信有关的Socket类和ServerSocket类。本章包括以下知识点。
计算机网络原理 徐明伟
利用Wireshark观察网络报文 2015.
SVN的基本概念 柳峰
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
第11章 Java网络编程 本章要点 11.1 网络基础 11.2 InetAddress编程 11.3 URL编程
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
存储系统.
大学计算机基础 典型案例之一 构建FPT服务器.
SOCKET编程原理.
SQL Injection.
网络常用常用命令 课件制作人:谢希仁.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
实用组网技术 第一章 网络基础知识.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2010
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第17章 网站发布.
利用Arduino制作定向装置 核科学与技术系 崔伟毅 梁嘉祺
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第 5 章 串行通信.
(第2版).
第7章 网络编程.
5.3 简单的tcp通讯 信息工程系 向模军 Tel: QQ:
SOA – Experiment 2: Query Classification Web Service
Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26
C语言程序设计 主讲教师:陆幼利.
第四章 团队音乐会序幕: 团队协作平台的快速创建
DQMClientDim.cxx及双光子练习
主要内容: 无线局域网的定义 无线传输介质 无线传输的技术 WLAN的架构 无线网络搭建与配置 无线网络加密配置
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
面向非连接的 SOCKET编程 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
信号量(Semaphore).
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
数据报分片.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
_07多连接之select模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
顺序结构程序设计 ——关于“字符串”和数值.
入侵检测技术 大连理工大学软件学院 毕玲.
1 Web基础知识 1.1 HTTP协议 1.2 Web服务器和浏览器 1.3 C/S模式与B/S模式 1.4 Web的访问原理
Visual C++网络通信编程 2007年8月.
Presentation transcript:

第 8 章 网络程序设计

本章重点 Socket的基本概念 如何实现面向连接的TCP编程 如何实现非连接的TUDP编程 复杂网络程序的实现

8.1.1 TCP/IP概述 TCP/IP协议叫做传输控制/网际协议,又叫网络通讯协议。 TCP/IP是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。 各种协议:

8.1.2 TCP/IP模块结构 TCP/IP从协议分层模型方面来看,由四个层次组成:网络接口层、网络层、传输层、应用层 。

8.2.1 socket简介 socket是网络编程的一种接口,它是一种特殊的I/O,用socket函数建立一个Socket连接,此函数返回一个整型的socket描述符,随后进行数据传输。 通常socket分为三种类型:流式socket、数据报socket、原始socket。 注意:一个完整的socket有一个本地唯一的socket号,由操作系统分配。最重要的是,socket 是面向客户/服务器模型而设计的。

8.2.2 socket套接口简介 一个IP地址,一个通讯端口,就能确定一个通讯程序的位置。为此开发人员专门设计了一个套接结构,就是把网络程序中所用到的网络地址和端口信息放在一个结构体中。 一般套接口地址结构都以“sockaddr”开头。socket根据所使用的协议的不同可以分TCP套接口和UDP套接口,又称为流式套接口和数据套接口。 UDP是一个无连接协议,TCP是个可靠的端对端协议。传输UDP数据包时,LINUX不知道也不关心它们是否已经安全到达目的地,而传输TCP数据包时,则应先建立连接以保证传输的数据被正确接收。

8.2.3 socket套接口的数据结构 两个重要的数据类型:sockadd和sockaddr_in,这两个结构类型都是用来保存socket信息的,如IP地址、通信端口等。

8.2.4 TCP编程 基于TCP协议的编程,其最主要的特点是建立完连接后,才进行通信。 常用的基于TCP网络编程函数及功能

8.2.4 TCP编程 例8.1:服务器通过socket连接后,向客户端发送字符串“连接上了”。在服务器上显示客户端的IP地址或域名。 程序中的主要语句说明: 服务端 建立socket:socket(AF_INET, SOCK_STREAM, 0); 绑定bind:bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr); 建立监听listen:listen(sockfd, BACKLOG); 响应客户请求:accept(sockfd,(struct sockaddr *)&remote_addr, &sin_size); 发送数据send:send(client_fd, "连接上了 \n", 26, 0); 关闭close:close(client_fd);

8.2.4 TCP编程 客户端: 建立socket:socket(AF_INET, SOCK_STREAM, 0); 请求连接connect:connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)); 接收数据recv:recv(sockfd, buf, MAXDATASIZE, 0); 关闭close:close(sockfd);

8.2.4 TCP编程 服务端源程序代码:

8.2.4 TCP编程 客户端源程序代码 :

8.2.5 UDP编程 基于UDP协议的编程,其最主要的特点是不需要用函数bind把本地IP地址与端口号进行绑定,也能进行通信。

8.2.5 UDP编程 例8.2:服务器端接受客户端发送的字符串。客户端将打开liu文件,读取文件中的3个字符串,传送给服务器端,当传送给服务端的字符串为”stop”时,终止数据传送并断开连接。

8.2.5 UDP编程 主要语句说明: 服务端: 建立socket:socket(AF_INET,SOCK_DGRAM,0) 绑定bind:bind(sockfd,(struct sockaddr *)&adr_inet,sizeof(adr_inet)); 接收数据recvfrom:recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_clnt,&len); 关闭close:close(sockfd);

8.2.5 UDP编程 客户端: 建立socket:socket(AF_INET, SOCK_STREAM, 0); 读取liu文件:fopen("liu","r"); 发送数据sendto:sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_srvr,sizeof(adr_srvr)); 关闭close:close(sockfd);

8.2.5 UDP编程 服务端源程序代码:

8.2.5 UDP编程 客户端源程序代码 :

8.3 网络高级编程 在socket应用中,有一个很重要的特性,那就是如何处理阻塞,解决I/O多路利用问题。 在数据通信中,当服务器运行函数accept() 时,假设没有客户机连接请求到来,那么服务器就一直会停止在accept()语句上,等待客户机连接请求到来,出现这样的情况就称为阻塞。 例8.3:程序运行当中,在10.5秒判断有没有按回车键,有则返回“输入了”,否则返回“超时”。

8.3 网络高级编程 源程序代码: 程序通过select函数在指定的时间内唤醒或结束进程,是处理阻塞的一种好方法。

8.3 网络高级编程 例8.4:编写一个网络聊天程序。

8.3 网络高级编程 服务端源程序代码 :

8.3 网络高级编程 客户端源程序代码 :

思考与实验 在Linux系统下编写一个socket程序,要求服务端等待客户的连接请求.一旦有客户连接,服务器端打印出客户端的IP地址和端口,并且向服务器端发送欢迎信息和时间。 编写一个基于TCP协议的网络通信程序,要求服务器通过socket连接后,并要求输入用户,判断为liu时,才向客户端发送字符串"Hello, you are connected!"。在服务器上显示客户端的IP地址或域名。 一个以客户机/服务器模式工作,要求在客户端读取系统文件/etc/passwd内容,传送到服务端,服务器端接受字符串,并在显示器显示出来。