VisualC#.docx

上传人:b****1 文档编号:2136338 上传时间:2023-05-02 格式:DOCX 页数:13 大小:43.67KB
下载 相关 举报
VisualC#.docx_第1页
第1页 / 共13页
VisualC#.docx_第2页
第2页 / 共13页
VisualC#.docx_第3页
第3页 / 共13页
VisualC#.docx_第4页
第4页 / 共13页
VisualC#.docx_第5页
第5页 / 共13页
VisualC#.docx_第6页
第6页 / 共13页
VisualC#.docx_第7页
第7页 / 共13页
VisualC#.docx_第8页
第8页 / 共13页
VisualC#.docx_第9页
第9页 / 共13页
VisualC#.docx_第10页
第10页 / 共13页
VisualC#.docx_第11页
第11页 / 共13页
VisualC#.docx_第12页
第12页 / 共13页
VisualC#.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VisualC#.docx

《VisualC#.docx》由会员分享,可在线阅读,更多相关《VisualC#.docx(13页珍藏版)》请在冰点文库上搜索。

VisualC#.docx

VisualC#

第一章

1.网络编程的概念

只有主要实现进程(线程)相互之间的通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程。

2.编程步骤:

新建VisualC#项目→界面设计→属性设置→代码编写→调试运行

3.网络编程的层次

4.什么是套接字?

套接字实质是网络进程通信中所需要使用的一些缓冲区及相关的数据结构

4.1套接字类型

流式套接字:

提供了一种可靠的,面向连接的双向数据传输服务实现了数据无差错无重复的发送,内设流量控制,无记录边界。

当要发送大批量数据,或对数据可靠性要求较高时使用流式套接字

数据报套接字:

提供了一种无连接,不可靠的双向数据传输服务。

数据以独立包的形式发送并保留记录边界,不提供可靠性保证。

数据在传输过程中可能会丢失或重复,并且不保证在接收端数据按发送顺序接收

原始套接字:

该套接字允许对较低层协议进行直接访问。

5.用于网络进程通信的IPEndPoint类包含了应用程序连接到主机上的服务所需要的IP地址和端口号

6.IPAddress类

提供对IP地址的转换、处理等功能。

其Parse方法可将IP地址字符串转换为IPAddress实例。

eg:

IPAddressip=IPAddress.Parse(“192.168.1.1”);

7.Dns类

它把主机域名解析为IP地址,或者把IP地址解析为主机名。

(1)GetHostAddresses方法

获取指定主机的IP地址,返回一个IPAddress类型的数组。

格式为:

eg:

IPAddress[]ips=Dns.GetHostAddresses("");

(2)GetHostEntry方法

在DNS服务器中查询与某个主机名或IP地址关联的IP地址。

当参数为空字符串时,此方法返回本地主机的IPv4地址和主机名。

例如:

IPHostEntryhost=Dns.GetHostEntry("");

listBox1.Items.AddRange(host.AddressList);//本机所有IPv4地址

listBox1.Items.Add(host.HostName);//本机主机名

(3)GetHostName方法

获取本机主机名。

例如:

stringhostname=Dns.GetHostName();

8.IPHostEntry类

包含了Internet主机的相关信息。

(1)AddressList属性:

获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;

(2)HostName属性:

包含了服务器的主机名。

eg:

IPAddress[]ips=Dns.GetHostEntry(“").AddressList;

9.IPEndPoint类

IP地址和端口号的组合称为端点publicIPEndPoint(IPAddress,int);

其中第一个参数指定IP地址,第二个参数指定端口号。

第2章:

1.委托:

先定义后声明接着实例化,然后作为参数传递给方法,最后才使用。

1.1定义委托使用关键字delegate:

delegatevoidSomeDelegate(type1para1,type2para2,…,typenparan);

参数数据类型及个数、返回值数据类型都一致

2.线程是使用Tread类处理的,该类在System.Threading命名空间中。

Thread类接收一个ThreadStart委托或ParameterizedThreadStart委托的构造函数

Threadthread=newThread(newThreadStart(method));//创建线程

thread.Start();//无带参

thread.Start(3)//有带参

3.何时使用回调:

当不允许跨线程访问窗体要使用用回调,即跨线程访问时

3.1回调实现的一般过程:

(1)定义、声明回调:

delegatevoidDoSomeCallBack(typepara);

DoSomeCallBackdoSomeCallBack;

(2)初始化回调方法:

doSomeCallBack=newDoSomeCallBack(DoSomeMethod);

(3)触发对象动作:

Optobj.Invoke(doSomeCallBack,arg);

第三章:

1.建立一个连接需要三次握手,而终止一个连接需要四次握手

2.TCP编程使用C#提供的的TcpListener类和TcpClient类,分别用于编写服务器和客户端程序。

UDP编程只使用TcpClient类。

这三个类位于.Sockets

2.1TcpListener类

该类的构造函数常用的有以下两种重载形式:

TcpListener(IPEndPointiep)

TcpListener(IPAddresslocalAddr,intport)

在同步工作方式下,该类有对应有Start方法,Stop方法,AcceptSocket方法,AcceptTcpClient方法。

2.2TcpClient类

TcpClient的构造函数有以下4种重载形式。

(1)TcpClient()。

该构造函数创建一个默认的TcpClient对象,并自动分配本机(客户端)IP地址和端口号。

(2)TcpClient(AddressFamilyfamily)。

构造函数创建的TcpClient对象也能自动分配本机(客户端)IP地址和端口号,但是使用AddressFamily枚举指定使用哪种网络协议。

(3)TcpClient(IPEndPointiep)。

(4)TcpClient(stringhostname,intport)。

该构造函数会自动分配最合适的本地主机IP地址和端口号,并对DNS进行解析,然后与远程主机建立连接。

Eg:

TcpClienttcpClient=newTcpClient(“”,51888);

3.创建一个TcpListener对象,然后调用该对象的Start方法在指定的端口进行监听

privateIPAddresslocalAddress;//IP地址

privateconstintport=51888;//端口

privateTcpListenertcpListener;//监听套接字

IPAddress[]listenIp=Dns.GetHostAddresses("");

localAddress=listenIp[0];//初始化IP为本地地址

tcpListener=newTcpListener(localAddress,port);//创建TcpListener对象,开启监听tcpListener.Start();//监听开始

4.如何判断异步操作是否完成?

AsyncCallback委托用于在异步操作完成时调用指定的回调方法。

利用轮询方式判断异步操作是否完成。

具体思路为:

调用Begin方法得到IAsyncResult对象,在循环判断对象的IsCompleted属性决定异步操作是否完成。

利用接口的IsCompleted属性通过轮询方式检查异步调用是否完成。

使用EndInvoke结束异步调用

第四章

UDP与TCP的区别:

期中考

1.UdpClient类提供了6种重载的构造函数,用于IPv4和IPv6。

对于IPv4来说,常用的重载形式有以下4种:

①publicUdpClient()广(组)播

②publicUdpClient(intport)发送数据

③publicUdpClient(IPEndPointlocalEp)接收数据

④publicUdpClient(stringhostname,intport)收发数据

2.Send方法有3种不同的重载形式,如下:

①publicintSend(byte[]data,intlength,IPEndPointiep)目标为网络端点。

②publicintSend(byte[]data,intlength,stringhostname,intport)目标为远程主机。

③publicintSend(byte[]data,intlength)目标已默认。

3.Send方法三要素:

发送的数据、希望发送的字节数、远程IPEndPoint对象;

sendUdpClient.Send(sendbytes,sendbytes.Length,remoteIPEndPoint);

4.UdpClient对象的Receive方法只有一个IPEndPoint参数,它是一个引用(ref)类型,返回值为接收到的字节数组。

语法形式如下:

publicbyte[]Receive(refIPEndPointremoteEP)

详细代码:

期中考综合应用题第二题

5.什么是广播、组播?

两者有什么区别?

广播:

指同时向子网中的多台计算机发送消息,并且所有子网中的设备都可以接收到发送方发来的消息,广播消息地址分为本地广播和全球广播。

组播:

是将消息从一台计算机发送到本网或全网内选择的计算机子集上,即发送到那些加入组播组的计算机上。

区别:

当接收者分布于多个不同的子网内时,广播将不再适用,此时可以用组播来实现。

6.加入多路广播组:

UdpClient的JoinMulticastGroup方法

7.退出多路广播组:

UdpClient的DropMulticastGroup方法

第五章

p2p不是协议,是架构

1、P2p特点:

(1)对等模式;

(2)网络资源的分布式存储

2、P2p分类:

(1)单纯型p2p;

(2)混合型p2p(即时通讯使用的是混合型P2P)

3、对等名称解析协议(RNRP):

基于点对点协议

对等名称格式:

两部分组成:

Authority.Classifier

(1)Authority节:

值取决于该名称的安全类型(为0时,不安全;由字符构成时,安全)

(2)Classifier节:

是用户定义的用于标志对等节点的字符串(具体名称)

4.云:

是指一组可以通过p2p网络相互识别的对等节点及其上资源的集合。

4.1一个对等节点上的某个资源可以同时注册到多个云上。

4.2目前使用的两种云:

(1)链接一本地云

(2)全局云;(整个IPV6互联网仅有一个全局云)

第七章

WebBrowser是开发web浏览器的核心控件。

1.WebRequest和WebResponse都是抽象类(Abstract)

HttpWebRequest实例化:

HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(uriString);

WebResponse实例化

HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("");

HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();

...response.Close();

GetRequestStream方法:

返回将数据写入Internet资源的Stream,提供对Stream的同步访问

名称

说明

Method属性

获取或设置如何请求Internet资源,默认值是GET.可以将Method属性设置为任何HTTP/1.1支持的方法:

GET、HEAD、POST、PUT、DELETE、TRACE或OPTIONS

GetResponse方法

返回响应的WebResponse对象,由于WebResponse是抽象基类,所以该方法实际返回的实例是HttpWebResponse.此方法阻塞以等待发送的内容,如果没有超时设置并且没有提供内容,调用线程将无限期地阻塞。

还有,多次调用GetResponse会返回相同的响应对象,该请求不会重新发出

第八章

FtpWebRequest类的实例两种重载形式:

1.FtpWebRequest.Create(String)

FtpWebRequesreqFtp=(FtpWebRequest)FtpWebRequest.Create("ftp:

//myFTPServer/myFile");

2.FtpWebRequest.Create(Uri)

UrisiteUri=newUri("ftp:

//myFTPServer/myFile");

FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(siteUri);

WebRequestMethods.Ftp类用于封装FTP命令,FtpWebRequest对象提供的凭据还必须具有执行方法的权限,否则Ftp命令会失效。

request.Method=WebRequestMethods.Ftp.ListDirectoryDetails;

如果将Method属性设置为UploadFile,则必须调用GetRequestStream方法进行,如果调用不正确,则在尝试获取请求流的时候会引发ProtocolViolation-Exception异常

从Ftp服务器下载文件时,如果Ftp命令成功,所请求的文件的内容即包含在响应对象的流中。

客户端通过调用GetResponseStream方法可访问此流。

FtpWebResponse类

FtpWebRequestrequest=(FtpWebRequest)FtpWebRequest.Create(ftpUriString);

FtpWebResponseresponse=(FtpWebResponse)request.GetResponse();

在System.Net命名空间下,有一个NetworkCredential类。

该类用于提供客户端身份验证机制的凭据

属性

含义

Method

已重写。

获取或设置要发送到FTP服务器的命令

RenameTo

获取或设置重命名文件的新名称

GetRequestStream

已重写。

检索用于向FTP服务器上载数据的流

GetResponse

已重写。

返回FTP服务器响应

第九章

1、常用的电子邮件协议:

(1)SMTP(简单邮件传输协议):

25;

(2)POP3(邮局协议):

110

(3)IMAP(邮件访问协议):

143

2、电子邮件由:

信封、首部、正文、结束符号4部分组成

邮件以“.”结束,独占一行

3、.NET框架的System.Net.Mail命名空间提供了专门对邮件进行处理的类

4、RETR命令:

从服务器中获得一个邮件

第十章

1. 客户机HTTP请求

HTTP请求可以由多行组成,但最后一行必须是空行。

HTTP/1.1最常用的请求格式如下:

请求方法URLHTTP版本号

请求头信息 // 可省略

请求数据  // 可省略

<一个空行,这是请求的结束行>

2.客户可用的请求方法

GET返回URL所指的文档,一般情况下用于请求下载Web网页。

例如:

GET http:

//  HTTP/1.1

HEAD请求文档头,它类似于GET请求,只是Web服务器返回指定文档的首部信息。

该请求通常被用来测试超文本链接的正确性、可访问性和最近是否进行了修改

POST它与GET方法相反,请求服务器接收指定的文档,但它不是替换已有的文档,只是将新数据附加到它的后面。

一般可用来向新闻组发送一条消息,或发送能由交互用户填写的表格等

PUT它与GET方法相反,用从客户端传送的数据取代指定文档中的内容,使客户可以向远程Web服务器传送网页等文件

DELETE     请求服务器删除指定的页面

第十一章

(1)PORT命令:

主动模式,客户端监听端口号是address

(2)TYPE命令:

指定要传输的数据类型,有ASCII、BINARY两类型

(3)LIST命令:

返回指定路径下的子目录及文件列表,name为路径

(4)DELE命令:

删除文件

(5)RETR命令:

复制、下载文件

(6)STOR命令:

上传文件

删除代码:

privatevoidbtnDelete_Click(objectsender,EventArgse)

{

stringfileName=GetSelectedFile();

if(fileName.Length==0)

{

MessageBox.Show("请选择要删除的文件!

","提示");

return;

}

try

{

stringuri=GetUriString(fileName);

if(MessageBox.Show("确实要删除文件“"+fileName+"”吗?

"

"确认文件删除",MessageBoxButtons.YesNo)==DialogResult.Yes)

{

FtpWebRequestrequest=CreateFtpWebRequest(uri

WebRequestMethods.Ftp.DeleteFile);

FtpWebResponseresponse=GetFtpResponse(request);

if(response==null)

{

lstbxFtpStats.Items.Add("...服务端未响应!

");

lstbxFtpStats.TopIndex=lstbxFtpStats.Items.Count-1;

tbxOpt.Text="无法删除!

";

return;

}

lstbxFtpStats.Items.Add("已删除,服务器返回:

["

+response.StatusCode+"];["+response.StatusDescription+"]");

tbxOpt.Text="删除了文件:

"+fileName;

ShowFtpFileAndDirectory();

}

else

{

return;

}

}

catch(WebExceptionerr)

{

lstbxFtpStats.Items.Add("发生错误,返回状态:

["+err.Status+"]");

lstbxFtpStats.TopIndex=lstbxFtpStats.Items.Count-1;

tbxOpt.Text="删除失败!

";

MessageBox.Show(err.Message,"无法删除!

");}}

重命名客户端代码

privatevoidbuttonRename_Click(objectsender,EventArgse)

{

stringfileName=GetSelectedFile();

if(fileName.Length==0)

{

MessageBox.Show("请先选择要换名的文件");

return;

}

try

{

stringuri=GetUriString(fileName);

FtpWebRequestrequest=CreateFtpWebRequest(uri,WebRequestMethods.Ftp.Rename);

request.RenameTo=textBoxNewFileName.Text;

FtpWebResponseresponse=GetFtpResponse(request);

if(response==null)

{

return;

}

response.Close();

ShowFtpFileAndDirectory();

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message,"文件换名失败");

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2