国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

用.net中的socket實現(xiàn)文件傳輸

2024-07-10 12:59:36
字體:
供稿:網(wǎng)友
  • 本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • socket是網(wǎng)絡(luò)套接字,使用它我們可以很方便的實現(xiàn)網(wǎng)絡(luò)的數(shù)據(jù)傳輸。在.net中提供了socket類來幫助開

    發(fā)者調(diào)用socket的使用,從而避免了調(diào)用socket的動態(tài)庫來實現(xiàn)socket的麻煩。下面我們就來看一個簡單的例子,從這個簡單的例子來看看.net中的socket類實現(xiàn)socket是多么的方便。

      編程思路:在這個簡單的例子中我們將通過socket來實現(xiàn)文件的網(wǎng)絡(luò)傳輸和接收功能。要實現(xiàn)這兩個功能我們需要通過vs.net建立兩個實例來完成。一個發(fā)送端,一個接收端。由于文中已經(jīng)給出了詳細的注釋這里就不羅嗦了。


      發(fā)送端


    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)'建立終結(jié)點
    'openfiledialog1.showdialog()
    dim fs as new io.filestream("c:/p.doc",
      io.filemode.openorcreate, io.fileaccess.read)'要傳輸?shù)奈募?br> dim fssize(fs.length - 1) as byte
    dim strread as new io.binaryreader(fs)'流處理要傳輸?shù)奈募?br> 'fs.read(fssize, 0, fssize.length - 1)
    strread.read(fssize, 0, fssize.length - 1)
    sendsocket.connect(ipendpiont)'連接遠程計算機
    sendsocket.send(fssize)'發(fā)送文件
    label1.text = fs.length()
    fs.close()
    sendsocket.shutdown(net.sockets.socketshutdown.send)
      '關(guān)閉發(fā)送連接
    sendsocket.close()'關(guān)閉本機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)'監(jiān)聽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)
      '接收數(shù)據(jù)并將其保存到一個新的文件中
    dim recbyte(229888) as byte
    dim hostsocket as net.sockets.socket =
      receivesocket.accept()
      '同意和發(fā)送端計算機建立連接
    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

      通過上面的簡單語句我們就完成網(wǎng)絡(luò)文件的發(fā)送和接收,但是這里有一點要注意,此代碼只可以接受文本文件和圖片文件,對于其他文件的發(fā)送和接收將導(dǎo)致編碼錯誤,如果你不相信你可以傳輸一個mp3文件,再在播放器中打開接收到的mp3文件,你會聽到只有開頭不到2秒的音樂可以播放。如果想解決這個問題你需要使用,net中的tcp/ip類或udp類來實現(xiàn),當(dāng)然調(diào)用底層的socket動態(tài)庫也可以解決這個問題。
    發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 吴堡县| 巴塘县| 治县。| 长顺县| 韶关市| 沁阳市| 武宣县| 莲花县| 宽城| 象山县| 井冈山市| 易门县| 敦煌市| 武清区| 沽源县| 化德县| 泉州市| 饶河县| 宕昌县| 凌源市| 潮安县| 太保市| 巫山县| 靖远县| 竹山县| 布尔津县| 五常市| 绥宁县| 永兴县| 隆回县| 清丰县| 沁阳市| 巴彦淖尔市| 班玛县| 梁河县| 长垣县| 汽车| 和顺县| 双鸭山市| 信丰县| 鄱阳县|