亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于用戶數(shù)據(jù)報協(xié)議的Java Socket數(shù)據(jù)通信

        2012-11-15 06:46:12茹志鵑
        中國科技信息 2012年9期
        關(guān)鍵詞:進(jìn)程程序

        茹志鵑

        正德職業(yè)技術(shù)學(xué)院,江蘇 南京 211106

        基于用戶數(shù)據(jù)報協(xié)議的Java Socket數(shù)據(jù)通信

        茹志鵑

        正德職業(yè)技術(shù)學(xué)院,江蘇 南京 211106

        數(shù)據(jù)通信是網(wǎng)絡(luò)的主要應(yīng)用之一,隨著網(wǎng)絡(luò)的快速發(fā)展,大多程序設(shè)計語言都開發(fā)了實現(xiàn)數(shù)據(jù)通信的應(yīng)用程序接口,Java語言也不例外。Java語言,因平臺無關(guān)和多線程的特性,被廣泛應(yīng)用于Web開發(fā)中,其豐富的類庫中提供了Socket套接字,應(yīng)用程序可通過套接字向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求,非常方便的實現(xiàn)網(wǎng)絡(luò)間的數(shù)據(jù)通信?;谟脩魯?shù)據(jù)報通信協(xié)議或者傳輸控制協(xié)議,利用Java語言的面向?qū)ο?、多線程、可視化程序開發(fā)以及Socket套接字技術(shù),可以非常簡單的實現(xiàn)多個客戶端之間的網(wǎng)絡(luò)數(shù)據(jù)通信。

        Socket;UDP;數(shù)據(jù)報;多線程

        Java作為一種程序設(shè)計語言,簡單、面向?qū)ο蟆⒉灰蕾囉跈C(jī)器的結(jié)構(gòu)、具有可移植性、安全性、并且提供了并發(fā)的機(jī)制、具有很高的性能,最大限度地利用了網(wǎng)絡(luò),還提供了豐富的類庫,使程序設(shè)計者可以很方便地開發(fā)自己的系統(tǒng)。Java語言的眾多特點中,最特別的就是與平臺無關(guān)和多線程了,也因此被廣泛用于Web開發(fā)中。java.net包中,提供了網(wǎng)絡(luò)編程所需要各個類,通過這些類,可方便的開發(fā)網(wǎng)絡(luò)間數(shù)據(jù)通信程序。

        1.開發(fā)技術(shù)介紹

        實現(xiàn)網(wǎng)絡(luò)間的數(shù)據(jù)通信,必須基于傳輸層的兩個服務(wù)質(zhì)量不同的協(xié)議——TCP和UDP,Java類庫中提供了DatagramSocket和DatagramPacket兩個類來實現(xiàn)基于UDP協(xié)議的數(shù)據(jù)通信,同時也提供了Socket和ServerSocket兩個類來實現(xiàn)基于TCP協(xié)議的數(shù)據(jù)通信,下面主要介紹基于UDP協(xié)議的數(shù)據(jù)通信。

        1.1 UDP協(xié)議

        UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)協(xié)議是OSI參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù),是一個簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,傳送數(shù)據(jù)前并不與對方建立連接,在傳輸數(shù)據(jù)前,發(fā)送方和接收方相互交換信息使雙方同步,對接收到的數(shù)據(jù)包也不發(fā)送確認(rèn)信號,發(fā)送端不知道數(shù)據(jù)是否被正確接收,也不會重發(fā)數(shù)據(jù),因此具有較好的實時性和工作效率。

        1.2 SOCKET

        所謂socket通常也稱作“套接字”,是網(wǎng)絡(luò)編程中的一個接口,用于描述IP地址和端口,是一個通信鏈的句柄,應(yīng)用程序通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。

        J a v a語言的U D P通信中,使用DatagramSocket類來創(chuàng)建收、發(fā)數(shù)據(jù)報的Socket對象。與TCP通信不同,它不存在“連接”的概念,取而代之的是一個數(shù)據(jù)報包DatagramPacket對象,這個數(shù)據(jù)報包本身包含IP地址、端口號和數(shù)據(jù)內(nèi)容,據(jù)此可以知道發(fā)送方和目的地。

        使用DatagramSocket的構(gòu)造方法public DatagramSocket(int port)throws SocketException來創(chuàng)建數(shù)據(jù)報套接字,并綁定到指定的端口上。對于數(shù)據(jù)報的接收,主要使用DatagramPacket 類的public DatagramPacket(byte buf[],int length)方法構(gòu)造DatagramPacket對象,來接收長度為length的數(shù)據(jù)報包,發(fā)送數(shù)據(jù)報使用public DatagramPacket(byte[] buf, int length, InetAddress address, int port)構(gòu)造數(shù)據(jù)報包,用來將長度為length的包發(fā)送到指定主機(jī)上的指定端口號。

        2.程序介紹

        程序的設(shè)計過程中,界面制作可使用Java開發(fā)的可視化編程工具,創(chuàng)建窗口后,添加輸出信息的文本區(qū)域和輸入信息的文本框兩個控件,并且對回車事件和窗口關(guān)閉事件進(jìn)行處理,這里不再介紹。下面主要介紹使用DatagramSocket和DatagramPacket兩個類編寫數(shù)據(jù)通信的代碼和為提高程序的運(yùn)行速度所采用的多線程機(jī)制。

        2.1 創(chuàng)建接收和發(fā)送程序

        導(dǎo)入網(wǎng)絡(luò)編程所需要的包java.net,就可以開始編寫發(fā)送數(shù)據(jù)功能的方法代碼2-1和接收數(shù)據(jù)功能的方法代碼2-2。

        代碼2-2 接收數(shù)據(jù)報代碼

        接收方ds綁定端口號8000,并創(chuàng)建數(shù)據(jù)報dp,等待接收發(fā)送方發(fā)送的數(shù)據(jù);發(fā)送方ds無需綁定固定端口號,但必須在創(chuàng)建數(shù)據(jù)報dp時,指定要發(fā)送到電腦的IP地址和端口號8000,通過代碼2-1和2-2就可以實現(xiàn)簡單的基于UDP協(xié)議的數(shù)據(jù)通信。

        2.2 多線程技術(shù)

        一般來說,當(dāng)運(yùn)行一個應(yīng)用程序的時候,就啟動了一個進(jìn)程,有時會啟動多個進(jìn)程。啟動進(jìn)程的時候,操作系統(tǒng)會為進(jìn)程分配資源,其中最主要的資源是內(nèi)存空間。在進(jìn)程中,有些程序流程塊是可以亂序執(zhí)行的,并且這個代碼塊可以同時被多次執(zhí)行,這樣的代碼塊就是線程體。線程是進(jìn)程中亂序執(zhí)行的代碼流程,當(dāng)多個線程同時運(yùn)行的時候,這樣的執(zhí)行模式稱為并發(fā)執(zhí)行,多線程的目的是為了最大限度的利用CPU資源。

        Java編寫程序都運(yùn)行在Java虛擬機(jī)(JVM)中,在JVM的內(nèi)部,程序的多任務(wù)是通過線程來實現(xiàn)的。每個正在系統(tǒng)上運(yùn)行的程序都是一個進(jìn)程,每個進(jìn)程包含一到多個線程,進(jìn)程也可能是整個程序或者是部分程序的動態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨立執(zhí)行,也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級的進(jìn)程,它負(fù)責(zé)在單個程序里執(zhí)行多任務(wù),通常由操作系統(tǒng)負(fù)責(zé)多個線程的調(diào)度和執(zhí)行。Java語言中用多線程來同時為多個客戶提供服務(wù),這是提高服務(wù)器的并發(fā)性能的最常用手段。

        在網(wǎng)絡(luò)編程中,使用多線程可以把占據(jù)長時間的等待接收聊天信息的程序任務(wù)放到后臺去處理,使程序的運(yùn)行速度加快,提高CPU的利用率,在等待接收聊天信息的同時能夠發(fā)送聊天信息給對方。

        Java中用擴(kuò)展Thread類或者實現(xiàn)Runnable接口兩種方法來實現(xiàn)多線程,將發(fā)送數(shù)據(jù)端代碼2-1和接收數(shù)據(jù)端代碼2-2寫在實現(xiàn)多線程的run方法中即可。run方法是多線程程序的一個約定,所有的多線程代碼都在run方法里面。Thread類實際上也是實現(xiàn)了Runnable接口的類。在啟動多線程的時候,需要先通過Thread類的構(gòu)造方法Thread(Runnable target) 構(gòu)造出對象,然后調(diào)用Thread對象的start()方法來運(yùn)行多線程代碼。實際上所有的多線程代碼都是通過運(yùn)行Thread的start()方法來運(yùn)行的。因此,不管是擴(kuò)展Thread類還是實現(xiàn)Runnable接口來實現(xiàn)多線程,最終還是通過Thread的對象來控制線程的。

        3.結(jié)語

        本文介紹的DatagramSocket只允許數(shù)據(jù)報發(fā)往一個目的地,還可以使用java.net包中的類MulticastSocket。在發(fā)送數(shù)據(jù)報時使用MulticastSocket類,可以將數(shù)據(jù)報以廣播方式發(fā)送到指定端口的所有客戶。

        網(wǎng)絡(luò)特別是計算機(jī)網(wǎng)絡(luò)的發(fā)展,越來越深刻的改變著人們生活的方方面面。當(dāng)需要實時快速時,人們僅僅只需要簡單的通訊,這時可以使用UDP協(xié)議來實現(xiàn)數(shù)據(jù)通信的功能。但是由于UDP協(xié)議的無連接,若需要安全可靠的數(shù)據(jù)通信時,就需要選擇有連接的TCP協(xié)議來進(jìn)行數(shù)據(jù)通信了。

        總之,無論使用任何語言,任何方式實現(xiàn)數(shù)據(jù)通信,都必須遵循固定的步驟進(jìn)行操作,在熟悉了這些步驟以后,可以根據(jù)需要進(jìn)行邏輯上的處理,但還是必須以固定的步驟為前提。其實,實現(xiàn)基礎(chǔ)的數(shù)據(jù)通信本身不難,也不需要很多的基礎(chǔ)網(wǎng)絡(luò)知識,編程的基礎(chǔ)功能都已經(jīng)由應(yīng)用程序接口實現(xiàn),只需要按照固定的步驟進(jìn)行即可,例如使用Java提供的Socket接口和多線程技術(shù),可方便高效的開發(fā)基于UDP或TCP的通信軟件,實現(xiàn)網(wǎng)絡(luò)間數(shù)據(jù)通信。

        [1]孫衛(wèi)琴 編著. JAVA網(wǎng)絡(luò)編程精解[M].北京:電子工業(yè)出版社, 2007.2

        [2]劉永華.于春花編著.Java網(wǎng)絡(luò)編程技術(shù)[M].北京:清華大學(xué)出版社,2008.5

        10.3969/j.issn.1001-8972.2012.09.054

        茹志鵑、本科、講師、計算機(jī)科學(xué)與技術(shù)。

        猜你喜歡
        進(jìn)程程序
        債券市場對外開放的進(jìn)程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        我國高等教育改革進(jìn)程與反思
        Linux僵死進(jìn)程的產(chǎn)生與避免
        男女平等進(jìn)程中出現(xiàn)的新矛盾和新問題
        一区二区三区国产内射| 国产精品国产三级在线高清观看| 亚洲色图视频在线播放| 蜜臀av在线一区二区尤物| 精品久久久久久无码中文野结衣| 性一交一乱一伦a片| 日韩精品网| 亚洲一区二区三区在线激情| 国产精品国产三级第一集| 幻女bbwxxxx在线视频| 国产亚洲精品看片在线观看| 综合久久青青草免费观看视频| 19款日产奇骏车怎么样| 色妞色视频一区二区三区四区| 国产女在线| 亚洲成av在线免费不卡| 日韩精品一区二区三区在线视频| 少妇无码av无码一区| 欧美专区在线| 国产黑色丝袜在线观看网站91| 久久婷婷综合缴情亚洲狠狠| 曰韩无码二三区中文字幕| 中文字幕亚洲综合久久菠萝蜜| 国产精品午夜福利天堂| 丰满少妇高潮惨叫久久久| 日韩a无v码在线播放| 92精品国产自产在线观看48页 | 一区二区三区视频| 乱中年女人伦av| 日本护士一区二区三区高清热线| 一区二区三区国产内射 | 亚洲香蕉毛片久久网站老妇人| 蜜臀av在线一区二区尤物| 鲁丝片一区二区三区免费| 成人欧美一区二区三区白人| 国产中文字幕亚洲综合| 一区二区三区美女免费视频| 国产午夜亚洲精品午夜鲁丝片| 国产自在自线午夜精品视频在| 蜜乳一区二区三区亚洲国产| 99久久精品免费观看国产|