C#程序设计 c# programming 网络编程 C#程序设计课程组.

Slides:



Advertisements
Similar presentations
一、软件简介 二、功能介绍 三、产品优势 四、应用范围 五、成功客户 目录目录 软件简介 ●员工工作时间,都认真工作了? ●还是在玩游戏? ●浏览与工作无关的网站? ●收发私人邮件? ●甚至将公司的机密资料拷贝带 走?或是通过邮件或聊天工具泄 密? …… 解决之道.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
1 项目一 计算机网络概论 2 项目二 计算机网络协议与体系结构 3 项目三 物理层基础与应用 4 项目四 数据链路层基础与应用 5 项目五 网络层基础与应用 6 项目六 传输层的基础与应用 7 项目七 应用层的基础与应用 8 项目八 网络管理与网络安全.
第七章 Internet网络应用.
计算机应用基础网考课 第六章 计算机网络基础.
網路程式設計 (Network Programming)
项目四:Internet基础与接入方法 第八章 应用服务器安装配置
第6章:计算机网络基础 网考小组.
2.4 计算机网络基础 什么是计算机网络? 计算机网络有哪些功能? 计算机网络的发展历史? 计算机网络体系结构的内容? 计算机网络如何分类?
计算机网络(第 6 版) 第 6 章 应用层 青岛理工大学通信与电子工程学院.
第 12 章 UDP 與 TCP.
了 解 从 Internet IP 开 始.
四資二甲 第三週作業 物件導向程式設計.
Chapter 12 UDP 與 TCP.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
了 解 Internet 从 ip 开 始.
网络实用技术基础 Internet技术及应用.
第2章 计算机网络体系结构 教学目标: 通过本章的学习,了解计算机网络体系结构和各个层次的相关协议,理解接口和服务等概念。掌握ISO/OSI模型和TCP/IP模型的各个层次及其所实现的功能。掌握IP地址的功能和划分,并对子网掩码和下一代互联网IPv6有相应的了解。
计算机系统安全 第10章 常用攻击手段.
網路基本概念與設定方法 林文宗 資管系助理教授
教学目的:通过本章的学习大家要掌握端口 教学重点:端口的分类的两大类,静态端口 教学难点:几种常见的端口.
基于WinSock的邮件系统 1 设计目标: 1.1 SMTP发送邮件服务器(c语言) 1.2 POP3接受邮件服务器(c语言)
学习目标: 1)理解包和包过滤 2)理解包过滤的方法 3)设置特殊的包过滤规则
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
網路概論.
VISUAL BASIC 2008 網路程式設計 文魁資訊股份有限公司.
第 12 章 UDP 與 TCP.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
Java语言程序设计 清华大学出版社 第9章 网络通信.
华南师范大学 防火墙 华南师范大学
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
TCP和UDP基本原理.
網路服務 家庭和小型企業網路 – 第六章.
C# 的 Web 相關物件之使用 日期 : 2018/11/21.
计算机网络技术基础 任课老师: 田家华.
第14章 建立網路應用程式 14-1 瀏覽器的建立 14-2 檔案下載器 14-3 寄送電子郵件 14-4 檢查POP 3的電子郵件.
访问控制列表(ACL) Version 1.0.
C#程序设计 c# programming 多线程 C#程序设计课程组.
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
第 2 章 TCP / IP 簡介.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十一章 Java 中的网络编程.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Windows 2003 server 進階介紹 麋鹿.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
本章要点: 计算机网络的基本概念 Internet基础 Internet服务
网络系统集成技术 访问控制列表 Access Control List 第七章.
第4章 OSI傳輸層.
網路程式設計 - C# 版 日期 : 2018/12/10.
OSI七層架構 OSI階層 負責的工作 應用層 表達層 會議層 傳輸層 網路層 資料鏈結層 實體層 將應用程式所送出的訊息轉成字元資料
Westmont College 互联网应用软件 第二讲 (DNS, , TELNET, FTP)
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
P2P聊天工具.
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Web前端开发 第23章:网站发布 阮晓龙 / 河南中医药大学管理科学与工程学科
Web Server 王宏瑾.
Network Application Programming(3rd Edition)
JAVA 编 程 技 术 主编 贾振华 2010年1月.
1.4 计算机网络体系结构与协议 引言 网络系统的体系结构 网络系统结构参考模型ISO/OSI
第三章 資料的傳收與接送 3-1 TCP程式設計 3-2 UDP程式設計 3-3 Socket程式設計 3-4資料的非同步傳送與接收.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Chapter 11 使用者資料包通訊協定.
2019/5/3 JAVA Socket(UDP).
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第10讲 Web服务.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
C#快速導讀 流程控制.
第二章 Java基本语法 讲师:复凡.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Presentation transcript:

C#程序设计 c# programming 网络编程 C#程序设计课程组

教学内容 TCP/IP概述 .Net网络编程基础 一个简单聊天应用

TCP/IP概述

TCP/IP协议与OSI参考模型 计算机网络协议 计算机网络协议是指连接在网络上的计算机进行相互通信的规则约定。

何为协议? to:广东省深圳市东城大道8-10号 中国网络广东公司网维中心 鹏飞 (收) 以寄信为例 , 正确的地址,姓名,邮政编号以及正确的格式才可以让信寄到收信人手中。 所谓网络协议(Protocol),就是使在网络中的通信双方能顺利进行信息交换而双方预先共同约定好并遵循的规程和规则。 523129 鹏飞 (收) From: 国务院 刘先生 100000 to:广东省深圳市东城大道8-10号 中国网络广东公司网维中心

TCP/IP协议和OSI参考模型 7 6 5 4 3 2 1 TCP/IP协议栈具有简单的分层设计,与OSI参考模型有清晰的对应关系 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 应 用 层 7 6 5 4 3 2 1 OSI参考模型 TCP/IP

TCP/IP协议栈 数据链路层 物理层 TCP/UDP IP 接口和线缆 提供应用程序网络接口 应用层 传输层 建立端到端连接 HTTP、Telnet、FTP、 TFTP、Ping、etc TCP/UDP ARP/RARP IP ICMP 802.3 接口和线缆 应用层 传输层 网络层 数据链路层 提供应用程序网络接口 建立端到端连接 寻址和路由选择 物理介质访问 二进制数据流传输 物理层

TCP TCP是一种可靠的、面向连接的协议,并可以实现流控和差错控制。为必须使用可靠数据传输的程序提供支持,如数据库服务和电子邮件服务.

UDP   UDP提供的是非连接的数据报服务,意味着UDP无法保证任何数据报的传递和验证。通常由每次传输少量数据或有实时需要的程序使用(QQ)

TCP与UDP比较

IP地址简介 为了使连入Internet的众多主机在通信时能够相互识别,Internet上的每一台主机和路由器都分配有一个唯一的32位地址。一个IP地址有4个字节组成,字节之间用句号分隔,每个字节表示为从 0 ~ 255 的十进制数(8位二进制数最大为 11111111 ,即十进制数255 11

子网(Subnet)

子网(Subnet) 65536个地址全部给一个网络 浪费资源 可以划分为256个子网,大大利用 了资源

端口号 TCP UDP IP 数 据 包 80 20/21 23 25 53 69 161 HTTP FTP Telnet SMTP DNS 传输层协议用端口号来标识和区分各种上层应用程序。 HTTP FTP Telnet SMTP DNS TFTP SNMP TCP UDP IP 数 据 包 80 20/21 23 25 53 69 161

.NET网络编程基础

命 名 空 间 命 名 空 间 功 能 概 述 System.Net 为当前网络上流行的多种协议提供一个统一、简单的编程接口。其中WebRequest和WebResponse类形成了“可插入协议”的基础,利用这种网络服务的实现,可以开发在使用Internet资源时不必考虑所用协议具体细节的应用程序 System.Net.Mail 用于将电子邮件发送到简单邮件传输协议(SMTP)服务器进行传送的类 System.Net.Mime 包含用于表示多用途Internet邮件交换(MIME)标头的类型。这些类型与System.Net.Mail命名空间中的类型一起使用,用于在使用SmtpClient类发送电子邮件时指定Content-Type、Content-Disposition和Content-transfer-Encoding标头 System.Net.Security 为网络流在主机间的传输提供了安全控制 System.Net.Sockets 为需要严格控制网络访问的开发人员提供Windows套接字(Winsock)接口的托管实现 System.Web 包含启用浏览器/服务器通信的类和接口。这些命名空间类用于管理到客户端的HTTP输出(HttpResponse)和读取HTTP请求(HttpRequest)。附加的类则提供了一些功能,用于服务器端的实用程序以及进程、cookie管理、文件传输、异常信息和输出缓存控制 System.Web.Mobile 包含生成ASP.NET移动Web应用程序所需的核心功能,包括身份验证和错误处理

主要的类 类 名 功 能 概 述 LingerOption 包含套接字延迟时间的信息,即当数据仍在发送时,套接字应在关闭后保持的时间 类 名 功 能 概 述 LingerOption 包含套接字延迟时间的信息,即当数据仍在发送时,套接字应在关闭后保持的时间 MulticastOption 包含了IP多点传送数据包的选项值 NetworkStream 为网络访问提供了基础数据流 Socket 实现了Berkeley套接字接口 SocketException 当出现套接字错误时,将抛出由该类所代表的异常 TCPClient 为TCP网络服务提供了客户连接 TCPListener 用以监听TCP客户连接 UDPClient 用于提供UDP网络服务

套接字编程 System.Net.Sockets名称空间包含允许直接发送TCP网络请求或侦听特定端口上的TCP网络请求的相关类 大量的方法和属性用于网络连接 提供客户端连接,用于创建和使用 TCP 网络服务 可用于为 UDP 客户端创建连接(它是 TCP 的备用协议,在本地网络上使用)

使用 TCP 类 TCP ( Transfers Control Protocol ,传输控制协议)类包含连接两个点并在这两个点之间发送数据的方法 一个点由 IP 地址和端口号组成。现有协议具有定义好的端口号 HTTP 使用端口号 80;SMPT 或电子邮件使用端口号 25; FTP 使用端口号 21 Internet Assigned Number Authority (IANA,Internet 编号分配管理机构)负责为这些有名的服务分配端口号 TCP 提供有保证的传送、错误更正和数据缓冲 TcpClient 类具有通过网络连接、发送和接收流数据的简单方法 TcpListener 类具有侦听进入的 TCP 连接的方法0

TcpClient 对象 属性 说明 ReceiveBufferSize 获取或设置接收缓冲区的大小 SendBufferSize 获取或设置发送缓冲区的大小 方法 说明 Close 关闭所有 TCP 连接并释放与 TcpClient 关联资源 Connect 将使用主机名和端口号将客户端连接至远程 TCP 主机 GetStream 返回用于发送和接收数据的NetworkStream

TCPListener 类的方法 方法 说明 AcceptSocket 返回与远程客户端通信的套接字 AcceptTcpClient TcpListener类具有侦听进入的TCP连接的方法,其中Start()方法用于开始侦听进入的连接请求,并且将把进入的连接放置在队列中,直到调用Stop()为止。AcceptSocket()或AcceptTcpClient()方法可用于从进入的连接请求队列中提取连接。 方法 说明 AcceptSocket 返回与远程客户端通信的套接字 AcceptTcpClient 接受暂挂的连接请求 Start 开始侦听进入的连接请求 Stop 关闭侦听器

UDP 类 方法 Receive() Send() Close() 当应用程序中速度和性能需求比可靠性更重要时,开发人员可以使用 UDP ( User Datagram Protocol ,用户数据报协议) 与 TcpClient 相比, UdpClient 类的接口更小且更简单。 UdpClient 不包含返回网络流以进行读写的方法 因为 UDP 是无连接协议,所以与远程主机的连接是在发送和接收数据时进行的 方法 Receive() Send() Close()

TCP应用编程

服务器对端口侦听 using System; using System.Net ; using System.Net.Sockets ; namespace Server { class Program{ public static void Main(string[] args) { //在本机创建一个TcpListener,端口是8888, TcpListener listener = new TcpListener(IPAddress.Any, 8888); //开始监听 Console.Write("Start listener . . . "); Console.ReadKey(true); }

客户机连接服务器 using System; using System.Net ; using System.Net.Sockets ; namespace Client{ class Program { public static void Main(string[] args) { Console.WriteLine("Client is runnning...!"); //生成一个TcpClinet TcpClient client = new TcpClient(); try{ client.Connect("127.0.0.1",8888); } catch (Exception ex) { Console.WriteLine (ex.Message ); return ; Console.Write("Server connect ..{0}-->{1}",client.Client.LocalEndPoint,client.Client.RemoteEndPoint);

服务器获取客户端连接 //在本机创建一个TcpListener,端口是8888, TcpListener listener = new TcpListener(IPAddress.Any, 8888); //开始监听, listener.Start(); Console.Write("Start listener . . . "); //接受客户端的连接,利用client保存连接的客户端 TcpClient remoteclient = listener.AcceptTcpClient(); Console.Write("Client connect ..{0}-->{1}",remoteclient.Client.LocalEndPoint,remoteclient.Client.RemoteEndPoint);

多客户端连接服务器 public static void Main(string[] args) { Console.WriteLine("Client is runnning...!"); TcpClient client; //生成一个TcpClinet for(int i=0;i<2;i++){ try{ client= new TcpClient(); client.Connect("127.0.0.1",8888); } catch (Exception ex) {Console.WriteLine (ex.Message ); return ; Console.WriteLine("Server connect ..{0}-->{1}",client.Client.LocalEndPoint,client.Client.RemoteEndPoint);

多客户端连接服务器 public static void Main(string[] args) { //在本机创建一个TcpListener,端口是8888, TcpListener listener = new TcpListener(IPAddress.Any, 8888); //开始监听, listener.Start(); Console.WriteLine("Start listener . . . "); while (true ) { //接受客户端的连接,利用client保存连接的客户端 TcpClient remoteclient = listener.AcceptTcpClient(); Console.WriteLine("Client connect ..{0}-->{1}",remoteclient.Client.LocalEndPoint,remoteclient.Client.RemoteEndPoint); }

同步字符串传输 public static void Main(string[] args) { Console.WriteLine("Client is runnning...!"); //生成一个TcpClinet TcpClient client; try{ client= new TcpClient(); client.Connect("127.0.0.1",8888); } catch (Exception ex) {Console.WriteLine (ex.Message ); return ; string Msg="Hello server ,I'm Client!"; Console.WriteLine (Msg ); NetworkStream streamToServer=client.GetStream (); byte[] buffer= Encoding.ASCII.GetBytes(Msg);//将字符串转化为字节 streamToServer.Write (buffer ,0,buffer.Length ); Console.ReadKey ();

public static void Main(string[] args) { const int BufferSize=8192; //在本机创建一个TcpListener,端口是8888, TcpListener listener = new TcpListener(IPAddress.Any, 8888); //开始监听, listener.Start(); Console.WriteLine("Start listener . . . "); //接受客户端的连接,利用client保存连接的客户端 TcpClient remoteclient = listener.AcceptTcpClient(); NetworkStream streamToClient = remoteclient.GetStream(); byte[] buffer=new byte[BufferSize]; int byteRead=streamToClient.Read (buffer ,0,BufferSize ); string Msg= Encoding.ASCII.GetString(buffer ,0,byteRead );//将字符串转化为字节 Console.WriteLine ("Reveive :{0}",Msg ); Console.ReadKey (); }

服务器回复,客户机收到并输出 public static void Main(string[] args) { const int BufferSize=8192; //在本机创建一个TcpListener,端口是8888, TcpListener listener = new TcpListener(IPAddress.Any, 8888); //开始监听, listener.Start(); Console.WriteLine("Start listener . . . "); //接受客户端的连接,利用client保存连接的客户端 TcpClient remoteclient = listener.AcceptTcpClient(); NetworkStream streamToClient = remoteclient.GetStream(); byte[] buffer=new byte[BufferSize]; int byteRead=streamToClient.Read (buffer ,0,BufferSize ); string Msg= Encoding.ASCII.GetString(buffer ,0,byteRead );//将字符串转化为字节 Console.WriteLine ("Reveive :{0}",Msg ); Msg=" Hello client,I am Server"; Console.WriteLine("Send to Client:{0}",Msg ); buffer =Encoding.ASCII.GetBytes(Msg);//将字符串转化为字节 streamToClient.Write (buffer ,0,buffer.Length ); Console.ReadKey (); }

public static void Main(string[] args) { int BufferSize=8192; Console.WriteLine("Client is runnning...!"); //生成一个TcpClinet TcpClient client; try{ client= new TcpClient(); client.Connect("127.0.0.1",8888); } catch (Exception ex) {Console.WriteLine (ex.Message ); return ; string Msg="Hello server ,I'm Client!"; Console.WriteLine ("Clent Send:{0}",Msg ); NetworkStream streamToServer=client.GetStream (); byte[] buffer= Encoding.ASCII.GetBytes(Msg);//将字符串转化为字节 streamToServer.Write (buffer ,0,buffer.Length ); int byteRead;//收到的字节数 buffer =new byte[BufferSize]; byteRead =streamToServer.Read (buffer ,0,BufferSize ); Msg= Encoding.ASCII.GetString(buffer ,0,byteRead );//将字节转化为字符串 Console.WriteLine ("Receive Server:{0}",Msg ); Console.ReadKey ();

总结 端口是特定机器上已编号的套接字。服务器进程侦听端口,直到有客户端与其连接为止 TcpClient 类有可用于连接、发送和接收流数据的方法;TcpListener 类具有侦听进入的 TCP 连接的方法