《网络编程小结.doc》由会员分享,可在线阅读,更多相关《网络编程小结.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络编程小结班级:090342 学号:09034217 姓名:李德风一、 网络编程基本概念通过使用套接字来达到进程间通信目的编程就是网络编程。windows提供的基于网络编程的就是套接字也就是winsock,但是现在Winpcap也是一个比较方便的工具。 网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理! 代码,开发工具
2、,数据库,服务器架设和网页设计这5部分你都要接触 代码分静态代码和动态代码 静态代码是服务器不解析直接发送给客户端的部分,用做布局效果,一般不用于数据库操作 静态代码分html,javascript,css等,其中html语言是基础,要学网络编程就先学html语言.javascript用于实现某些特效,css是样式语言.这3个语言组合起来,可以设计出美妙的网页效果 动态代码是服务器需要解析的部分,用作数据库连接操作等.有php,jsp,asp这几种语言你只用先学一种就可.如果是想快速入门,建议先学asp,如果想学了找工作等,建议学php或jsp, 开发工具有很多种,我推荐一种,网络3剑客,其中
3、dw是开发代码的,fw是做图的.flash是做动画的. 数据库要结合你学的动态语言来选择,asp系列的,你可以使用access,大型点使用mssql. php和mysql是很好的搭档. 服务器架设也是结合你学的动态语言的,windows下安装iis很方便,iis可以运行asp,安装.net框架后能运行,这两者架设相对简单,也是我推荐你入门学asp的原因.php一般安装apache服务器,jsp一般安装tomcat服务器.只有架设好服务器,才能浏览动态语言编写的程序. 虽然是编程,但是总会涉及到网页设计部分,还是要去学学怎么简单的作图和动画。二、关于基本语言的一些知识1.删除记录 opendat
4、aconn 打开数据库连接 xxlb=RtnReplaceInt(Trim(request(xxlb),0) 从里到外依次是接收xxlb变量,去除变量两端的空格,最外层是一个自定义函数,估计与替换有关。 id=changechr(request(id) 接收id,并转换成字符串 ids=split(id,) 把id按 , 分割,并保存到数组ids中 for i=0 to ubound(ids) 用for循环遍历数组 tt=trim(ids(i) 数组元素去除两端空格后赋值给tt conn.executedelete from house where id=&tt& 删除数据表中id=tt变量的
5、记录 next 循环结束 response.redirect house.asp?xxlb=&xxlb& 跳转到house页面并用get方法传递xxlb参数,值为xxlb变量的值. closedataconn 关闭数据库连接 2.连接数据库 dim conn 定义变量 dim char_str(20) 定义数组 sub OpenDataConn() 自定义过程,用户链接数据库地 dim connstr 定义变量 connstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= connstr = connstr & Server.MapPath(.
6、/./data/fyhouse_free.mdb) 数据库驱动字符串 response.write connstr 输出变量connstr的值 set conn=Server.CreateObject(AdoDb.Connection) 创建连接对象 conn.Open connstr 链接数据库 end sub 这句是过程的结束语,但从你贴出来的代码来看并没有开头。3.其他(1).ASP错误信息解决:IIS启用父路径的设置.举例:公司有个客户保修网站后台无法访问,我查看了源代码,发现ASP代码本身并没有什么问题。而且我下到本地能够访问。就是在网上不能正常连接,显示入下错误:Server.Ma
7、pPath() 错误 ASP 0175 : 80004005 不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 参数中不允许字符 .网页里面用了一个 Response.Redirect 的路径重指向,客户页面里面指向路径写的是相对路径,省略了网站域名地址。主要是IIS服务器没有开启父路径,修改方法:在IIS中 属性-主目录-配置-选项中。把”启用父路径“前面打上勾。确认刷新。如果服务器提供商出于安全考虑不开启父路径,建议路径指向的时候写绝对路径,即完整地址 如IIS6.0安装后默认设置是,不开启父路径
8、。(2).ASP网站程序自动升级实现的方法现在流行虚拟主机建站,我也有个网站,也算是个站长咯。当了近一年的站长,感到网站程序每次升级的时候颇为麻烦:先去官方看公告,然后下载升级包到本地,解压,FTP上传到虚拟主机。这些都是累人的体力活,加之本人又懒得很,所以异想天开的觉得要是程序能够自动升级就好了。所以就想了想,写了本文,希望对WEB程序开发者有帮助。这里只针对ASP,因为我只会ASP :-(先看看传统的win32程序的升级过程(比如杀毒软件),它是依靠软件的升级程序通过网络连接到服务器分析并下载升级文件到本地。WEB程序有点不一样,因为它是运行于WEB服务器。它最终是要把升级服务器上的文件覆
9、盖到WEB服务器,站长的电脑只是中转。如果直接把升级服务器上的文件Copy到WEB服务器(而不通过站长中转)那就实现了自动升级。好在系统自带了一个 Microsoft.XMLHTTP 组件用于访问WEB,在ASP中可以调用它来实现连接升级服务器下载升级文件。以下代码是利用 Microsoft.XMLHTTP下载文件的例子:%Set xPost = CreateObject(Microsoft.XMLHTTP) xPost.Open GET, xPost.Send() Set sGet = CreateObject(ADODB.Stream) sGet.Mode = 3 sGet.Type =
10、1 sGet.Open() sGet.Write(xPost.responseBody) sGet.SaveToFile Server.MapPath(update.exe),2 set sGet = nothing set sPOST = nothing response.Write(下载文件成功!)% 上面代码就是把 http:/www.xxx.org/test.exe保存到WEB服务器当前目录,至于Microsoft.XMLHTTP 的更多用法还是看看MSDN吧。如果文件比较多,就会多次调用Microsoft.XMLHTTP连接网络,就可能出现某次连接失败部分文件未能更新的情况,为了避免
11、这种情况,最好是把所有文件打包为一个文件一次下载到WEB后再解包。呵呵,这里说的打包可不是RAR或者ZIP包,而是我们自己定义。比如把所有文件拼接为一个,然后再根据特殊的记号分开。现在没这么麻烦咯,因为有个现成的办法,我们使用拿来主义就是:把所有文件(二进制形式)及其路径信息放入Access数据库。下面这个vbs文件(来自海洋顶端2006Plus)就是打包当前目录的所有文件的: Dim n, ws, fsoX, thePath Set ws = CreateObject(WScript.Shell) Set fsoX = CreateObject(Scripting.FileSystemObj
12、ect) thePath = ws.Exec(cmd /c cd).StdOut.ReadAll() & i = InStr(thePath, Chr(13) thePath = Left(thePath, i - 1) n = len(thePath)On Error Resume Next addToMdb(thePath) Wscript.Echo 当前目录已经打包完毕,根目录为当前目录 Sub addToMdb(thePath) Dim rs, conn, stream, connStr Set rs = CreateObject(ADODB.RecordSet) Set stream
13、 = CreateObject(ADODB.Stream) Set conn = CreateObject(ADODB.Connection) Set adoCatalog = CreateObject(ADOX.Catalog) connStr = Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Packet.mdb adoCatalog.Create connStr conn.Open connStr conn.Execute(Create Table FileData(Id int IDENTITY(0,1) PRIMARY KEY CLUST
14、ERED, P Text, fileContent Image) stream.Open stream.Type = 1 rs.Open FileData, conn, 3, 3 fsoTreeForMdb thePath, rs, stream rs.Close Conn.Close stream.Close Set rs = Nothing Set conn = Nothing Set stream = Nothing Set adoCatalog = Nothing End Sub Function fsoTreeForMdb(thePath, rs, stream) Dim i, it
15、em, theFolder, folders, files sysFileList = $ & WScript.ScriptName & $Packet.mdb$Packet.ldb$ Set theFolder = fsoX.GetFolder(thePath) Set files = theFolder.Files Set folders = theFolder.SubFolders For Each item In folders fsoTreeForMdb item.Path, rs, stream Next For Each item In files If InStr(LCase(
16、sysFileList), $ & LCase(item.Name) & $) = 0 Then rs.AddNew rs(P) = Mid(item.Path, n + 2) stream.LoadFromFile(item.Path) rs(fileContent) = stream.Read() rs.Update End If Next Set files = Nothing Set folders = Nothing Set theFolder = Nothing End Function 以下是解包的ASP文件: (3).ASP进阶学习:一些VBscrpt函数Array()函数返回
17、一个数组 表达式 Array(list) 允许数据类型: 字符,数字均可 实例: 返回结果: 建立了一个包含7个元素的数组myArray myArray(Sunday,Monday, . . Saturday) CInt() 函数将一个表达式转化为数字类型 表达式 CInt(expression) 允许数据类型: 任何有效的字符均可 实例: 返回结果: 236 转化字符234为数字234,如果字符串为空,则返回0值 CreateObject() 函数建立和返回一个已注册的ACTIVEX组件的实例。 表达式 CreateObject(objName) 允许数据类型: objName 是任何一个有
18、效、已注册的ACTIVEX组件的名字. 实例: CStr() 函数转化一个表达式为字符串. 表达式 CStr(expression) 允许数据类型: expression 是任何有效的表达式。 实例: 返回结果: 转化数字“5”为字符“5”。 Date() 函数返回当前系统日期. 表达式 Date() 允许数据类型: None. 实例: 返回结果: 9/9/00 DateAdd() 函数返回一个被改变了的日期。 表达式 DateAdd(timeinterval,number,date) 允许数据类型: timeinterval is the time interval to add; numb
19、er is amount of time intervals to add; and date is the starting date. 实例: 返回结果: 9/9/00 3:34:45 PM m = month; d = day; If currentDate is in time format then, h = hour; s = second; DateDiff() 函数返回两个日期之间的差值。 表达式 DateDiff(timeinterval,date1,date2 , firstdayofweek , firstweekofyear) 允许数据类型: timeinterval
20、表示相隔时间的类型,如“M“表示“月”。 实例: 返回结果: 从9/9/00 到2000年还有 150 天. Day() 函数返回一个月的第几日 . 表达式 Day(date) 允许数据类型: date 是任何有效的日期。 实例: 返回结果: 4 formatCurrency() 函数返回表达式,此表达式已被格式化为货币值 表达式 formatCurrency(Expression , Digit , LeadingDigit , Paren , GroupDigit) 允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置; LeadingDi
21、git 三态常数,指示是否显示小数值小数点前面的零。 实例: 返回结果: $34.35 formatDateTime() 函数返回表达式,此表达式已被格式化为日期或时间 表达式 formatDateTime(Date, , Namedformat) 允许数据类型: Namedformat 指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate. 实例: 返回结果: Sunday, September 09, 2000 formatNumber() 函数返回表达式,此表达式已被格式化为数值. 表达式 formatNumber(Expression , Digit , Le
22、adingDigit , Paren , GroupDigit) 允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是计算机的区域设置。. 实例: 返回结果: 45.325 formatPercent() 函数返回表达式,此表达式已被格式化为尾随有 % 符号的百
23、分比(乘以 100 )。 (%) 表达式 formatPercent(Expression , Digit , LeadingDigit , Paren , GroupDigit) 允许数据类型: 同上. 实例: 返回结果: 45.267% Hour() 函数以24时返回小时数. 表达式 Hour(time) 允许数据类型: 实例: 返回结果: 16 (Hour has been converted to 24-hour system) Instr() 函数返回字符或字符串在另一个字符串中第一次出现的位置. 表达式 Instr(start, strToBeSearched, strSearch
24、For , compare) 允许数据类型: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式(详细见ASP常数) 实例: 返回结果: 9 InstrRev() 函数同上,只是从字符串的最后一个搜索起 表达式 InstrRev(start, strToBeSearched, strSearchFor , compare) 允许数据类型: 同上. 实例: 返回结果: 13 Int() 函数返回数值类型,不四舍五入。 表达式 Int(number) 允许数据类型: 实例: 返回结果: 32 IsArray() 函
25、数判断一对象是否为数组,返回布尔值 . 表达式 IsArray(name) 实例: 返回结果: False IsDate() 函数判断一对象是否为日期,返回布尔值 表达式 IsDate(expression) 实例: 返回结果: True IsEmpty() 函数判断一对象是否初始化,返回布尔值. 表达式 IsEmpty(expression) 实例: 返回结果: True IsNull() 函数判断一对象是否为空,返回布尔值. 表达式 IsNull(expression) 实例: 返回结果: False IsNumeric() 函数判断一对象是否为数字,返回布尔值. 表达式 IsNumeric(expression) 实例: 返回结果: True 就算数字加了引号,ASP还是认为它是数字。 IsObject() 函数判断一对象是否为对象,返回布尔值. 表达式 IsObject(expression) 实例: 返回结果: True
限制150内