Java和C#有什么不同

小編給大家分享一下Java和C#有什么不同,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

撫州網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

Java和C#都提供了對(duì)網(wǎng)絡(luò)的不同抽象層,編程人員可以使用不同的網(wǎng)絡(luò)接口完成對(duì)網(wǎng)絡(luò)的操作。

Java C#
應(yīng)答/請(qǐng)求:
java.net.URL和java.net.URLConnection。
System.Net.WebRequest。

協(xié)議:
TCP/IP協(xié)議使用java.net.Socket和java.net.ServerSocket;
UDP協(xié)議使用java.net.DatagramSocket和java.net.MulticastSocket。
CP/IP協(xié)議使用System.Net.Sockets.TCPListener和System.Net.Sockets.TCPClient;
UDP協(xié)議使用TSystem.Net.Sockets.UDPClient

原始套接字層:
沒有。
System.Net.Sockets.Socket


應(yīng)答/請(qǐng)求層可以用于HTTP類的請(qǐng)求,其中的一端開始啟動(dòng)一個(gè)連接,發(fā)送一些字節(jié)的數(shù)據(jù),然后停止,等待對(duì)方作為應(yīng)答發(fā)回的一些字節(jié)。對(duì)于象流這樣更靈活的操作,協(xié)議層的用處更大。對(duì)于大多數(shù)的Java編程人員來說,除非需要完成性能非常高的網(wǎng)絡(luò)操作,不需要對(duì)套接字進(jìn)行直接控制。如果需要。C#仍然提供了對(duì)原始的Berkeley套接字進(jìn)行控制的能力。

應(yīng)答/請(qǐng)求層:

這個(gè)層次抽象掉了所有網(wǎng)絡(luò)層的細(xì)節(jié),提供了一個(gè)可以雙向傳輸數(shù)據(jù)的象流那樣的接口。Java可以接受HTTP URL,并通過下面的命令完成GET命令:

URLurl= new URL( "http://to.post.to.com" );
URLConnection urlConnection url.openConnection();
InputStream input urlConnection.getInputStream();
... read stuff from input ...
input.close();

C#通過System.Net.WebRequest對(duì)象完成同樣的功能:

WebRequest request= WebRequestFactory.Create(
"http://to.post.to.com" );
Stream input request.GetResponse().GetResponseStream();
... read stuff from input ...
input.Close();

二種語言都隱藏了底層的套接字創(chuàng)建HTTP協(xié)議要求,而是提供了編程人員可以用來發(fā)送和接收數(shù)據(jù)的流。與C#中的Stream類一樣,WebRequest類有可以異步地獲得流進(jìn)行寫或從中讀數(shù)據(jù)的流的方法,或者可以從中讀取數(shù)據(jù)的WebResponse對(duì)象。

協(xié)議層:

對(duì)于熟悉java.net.Socket的Java編程人員對(duì)于System.Net.Sockets.TCPClient應(yīng)該非常熟悉,因?yàn)槎呤欠浅O嗨频?。由于編程人員無須處理套接字的實(shí)現(xiàn),而只須返回一個(gè)可供使用的流,因此二者的API和功能都非常相似。

在Java中可以使用下面的命令實(shí)現(xiàn)一個(gè)非常簡(jiǎn)單的telnet客戶端:

Socket telnet= new Socket( "telnet.host.com", 23 );
OutputStream output= telnet.getOutputStream();
InputStream input= telnet.getInputStream();

二個(gè)流都可用于與telnet同telnet.host.com的連接中。同樣功能的程序可以以相同的風(fēng)格在C#中用下面的方式實(shí)現(xiàn):

TCPClient telnet= new TCPClient( "telnet.host.com", 23 );
Stream telnetStream= telnet.GetStream();
StreamWriter output =new StreamWriter( telnetStream );
StreamReader input =new StreamReader( telnetStream );


接收TCP/IP連接在二種語言中幾乎是相同的。在Java中,可以用下面的命令建立、并接收TCP/IP連接:

ServerSocket server= new ServerSocket( 23 );
Socket accept =server.accept();


C#中的實(shí)現(xiàn)方式如下:

TCPListener server= new TCPListener( 23 );
server.Start();
Socket accept= server.Accept();


在二種語言中,每個(gè)接收的套接字都需要單獨(dú)處理。在Java中,比較好的方法(直到Java 1.4)是為每個(gè)接收的套接字產(chǎn)生一個(gè)線程。在C#中也可以作同樣的處理,Socket類提供了使用帶有select方法的事件驅(qū)動(dòng)的接口。(在事件驅(qū)動(dòng)方式下對(duì)套接字編程已經(jīng)超出了本文的范圍。)

原始套接字層:

這一部分的內(nèi)容對(duì)于大多數(shù)Java程序員來說都是陌生的。由于被java.net.Socket和 java.net.DatagramSocket二個(gè)類進(jìn)行了抽象,只使用Java編程語言的編程人員幾乎無需了解Berkeley套接字的實(shí)現(xiàn)。通過對(duì)Berkeley Socket類進(jìn)行操作,同樣可以實(shí)現(xiàn)Java中的流功能。
至此,我們已經(jīng)用C#中的命令實(shí)現(xiàn)了大多數(shù)在Java中被抽象的功能━━對(duì)I/O和網(wǎng)絡(luò)的操作。

以上是“Java和C#有什么不同”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:Java和C#有什么不同
路徑分享:http://bm7419.com/article12/pcsjdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司建站公司、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、定制開發(fā)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司