用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
buffalo的公告
<P><a target=blank href=http://wpa.qq.com/msgrd?V=1&Uin=760163&Site=blog of LJH&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:760163:1 alt="点击这里给我发消息"></a> </P> <script language="jscript"> var bsYear; var bsDate; var bsWeek; var arrLen=8; //数组长度 var sValue=0; //当年的秒数 var dayiy=0; //当年第几天 var miy=0; //月份的下标 var iyear=0; //年份标记 var dayim=0; //当月第几天 var spd=86400; //每天的秒数 var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354 var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354 var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384 var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354 var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355 var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384 var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354 var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30"; var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月" var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; var Ys=new Array(arrLen); Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600;Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;Ys[6]=1107878400;Ys[7]=1138464000; var Yn=new Array(arrLen); //农历年的名称 Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年";Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年";Yn[6]="乙酉年";Yn[7]="丙戌年"; var D=new Date(); var yy=D.getYear(); var mm=D.getMonth()+1; var dd=D.getDate(); var ww=D.getDay(); if (ww==0) ww="星期日"; if (ww==1) ww="星期一"; if (ww==2) ww="星期二"; if (ww==3) ww="星期三"; if (ww==4) ww="星期四"; if (ww==5) ww="星期五"; if (ww==6) ww="星期六"; ww=ww; var ss=parseInt(D.getTime() / 1000); if (yy<100) yy="19"+yy; for (i=0;i<arrLen;i++) if (ss>=Ys[i]){ iyear=i; sValue=ss-Ys[i]; //当年的秒数 } dayiy=parseInt(sValue/spd)+1; //当年的天数 var dpm=year1999; if (iyear==1) dpm=year2000; if (iyear==2) dpm=year2001; if (iyear==3) dpm=year2002; if (iyear==4) dpm=year2003; if (iyear==5) dpm=year2004; if (iyear==6) dpm=year2005; if (iyear==7) dpm=year2006; dpm=dpm.split(";"); var Mn=month1999; if (iyear==2) Mn=month2001; if (iyear==5) Mn=month2004; if (iyear==7) Mn=month2006; Mn=Mn.split(";"); var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; Dn=Dn.split(";"); dayim=dayiy; var total=new Array(13); total[0]=parseInt(dpm[0]); for (i=1;i<dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1]; for (i=dpm.length-1;i>0;i--) if (dayim>total[i-1]){ dayim=dayim-total[i-1]; miy=i; } bsWeek=ww; bsDate=yy+"年"+mm+"月"; bsDate2=dd; bsYear="农历"+Yn[iyear]; bsYear2=Mn[miy]+Dn[dayim-1]; if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7]; document.write(bsDate+bsDate2+"日 "); document.write(bsWeek+" "); document.write(bsYear+" "+bsYear2); </script> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-547684-1"; urchinTracker(); </script>
文章分类
链接
51cmm
GotDotNet
LinuxByte
Linux下载
mp3下载
MSDN中文网站
ORACLE中国用户讨论组
PROXY(RSS)
中国系统分析员
数据库编程
存档

原创  用.net中的socket实现文件传输 icknay [原作] 收藏

socket是网络套接字,使用它我们可以很方便的实现网络的数据传输。在.net中提供了socket类来帮助开

发者调用socket的使用,从而避免了调用socket的动态库来实现socket的麻烦。下面我们就来看一个简单的例子,从这个简单的例子来看看.net中的socket类实现socket是多么的方便。

  编程思路:在这个简单的例子中我们将通过socket来实现文件的网络传输和接收功能。要实现这两个功能我们需要通过vs.net建立两个实例来完成。一个发送端,一个接收端。由于文中已经给出了详细的注释这里就不罗嗦了。


  发送端


Public Class Form1
??? Inherits System.Windows.Forms.Form
??? Private Sub Button1_Click(ByVal sender As System.Object,
???   ByVal e As System.EventArgs) Handles Button1.Click
??????? Dim sendsocket As New Net.Sockets.Socket
  (Net.Sockets.AddressFamily.InterNetwork,
  Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
  '实例化socket
??????? Dim ipendpiont As New Net.IPEndPoint
  (Net.IPAddress.Parse("192.168.0.1"), 8888)'建立终结点
??????? 'OpenFileDialog1.ShowDialog()
??????? Dim fs As New IO.FileStream("c:\p.doc",
  IO.FileMode.OpenOrCreate, IO.FileAccess.Read)'要传输的文件
??????? Dim fssize(fs.Length - 1) As Byte
??????? Dim strread As New IO.BinaryReader(fs)'流处理要传输的文件
??????? 'fs.Read(fssize, 0, fssize.Length - 1)
??????? strread.Read(fssize, 0, fssize.Length - 1)
??????? sendsocket.Connect(ipendpiont)'连接远程计算机
??????? sendsocket.Send(fssize)'发送文件
??????? Label1.Text = fs.Length()
??????? fs.Close()
??????? sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send)
  '关闭发送连接
??????? sendsocket.Close()'关闭本机socket
??? End Sub
End Class

  接收端

Public Class Form1
??? Inherits System.Windows.Forms.Form
??? Dim receivesocket As New Net.Sockets.Socket
???   (Net.Sockets.AddressFamily.InterNetwork,
???   Net.Sockets.SocketType.Stream,
???   Net.Sockets.ProtocolType.Tcp)
??? Private Sub Form1_Load(ByVal sender As System.Object,
???     ByVal e As System.EventArgs) Handles MyBase.Load
??????? Dim hostipendpiont As New Net.IPEndPoint
  (Net.IPAddress.Parse("192.168.0.1"), 8888)
??????? receivesocket.Bind(hostipendpiont)
  '建立远程计算机的的socket
??????? receivesocket.Listen(2)'监听socket
??? End Sub

??? Private Sub Button1_Click(ByVal sender As Object,
???   ByVal e As System.EventArgs) Handles Button1.Click
??????? Dim recfs As New IO.FileStream("p.doc",
  IO.FileMode.OpenOrCreate)
  '接收数据并将其保存到一个新的文件中
??????? Dim recbyte(229888) As Byte
??????? Dim hostsocket As Net.Sockets.Socket =
  receivesocket.Accept()
  '同意和发送端计算机建立连接
??????? Dim newfilestr As New IO.BinaryWriter(recfs)'流写
??????? hostsocket.Receive(recbyte)
??????? 'recfs.Write(recbyte, 0, recbyte.Length - 1)
??????? newfilestr.Write(recbyte, 0, recbyte.Length - 1)
??????? recfs.Close()
??????? hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)
??????? hostsocket.Close()
??? End Sub
End Class

  通过上面的简单语句我们就完成网络文件的发送和接收,但是这里有一点要注意,此代码只可以接受文本文件和图片文件,对于其他文件的发送和接收将导致编码错误,如果你不相信你可以传输一个mp3文件,再在播放器中打开接收到的mp3文件,你会听到只有开头不到2秒的音乐可以播放。如果想解决这个问题你需要使用,net中的tcp/ip类或udp类来实现,当然调用底层的socket动态库也可以解决这个问题。

发表于 @ 2004年08月11日 14:51:00 | 评论( loading... ) | 编辑| 举报| 收藏

新一篇:用Delphi编写Win2000服务程序

  • 发表评论
  • 评论内容:
  •  
Copyright © buffalo
Powered by CSDN Blog