亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

初始網絡進程通信

系統 2289 0

可以這樣說:我們在網絡上只做一件事,利用各種軟件沒完沒了的相互通信。

?????? 對于單機系統而言,進程在系統中有自己唯一的進程號。 但在網絡環境下,各主機獨立分配的進程號不能唯一標識該進程。例如,主機A賦于某進程號5,在B機中也可以存在5號進程,因此,“5號進程”這句話就沒有意義了。而且 ? 操作系統支持的網絡協議眾多,不同協議的工作方式不同,地址格式也不同。因此,網間進程通信還要解決多重協議的識別問題。

????? 為此,TCP/IP協議為網間進程通信問題建立了IP地址,端口,Socket(套接字)等概念。

???? (1) IP地址

?????????? IP地址是連入網絡中的機器的唯一識別地址。信息可以根據IP選擇路由方向,從而找到目的地機器。這就像 ? 郵遞員(路由器)根據你們家房子(目的機器)的地址(IP地址)遞送包裹(信息) ? 。

?

???? (2) 端口

?????????? 我們知道,一臺擁有IP地址的主機可以提供許多服 務,比如web服務、FTP服務、SMTP服務等。對于不同的服務請求,主機需要調用不同的程序進行處理??墒侵鳈C怎么知道是什么服務請求那?顯然僅僅知道IP地址是不夠的,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。

????????? 端口實質上是抽象的軟件結構(不要理解成機器上的USB插槽),它包括一些數據結構和I/O(基本輸入輸出)緩沖區。系統會為這些數據結構和緩沖區指定一個唯一的端口號。不同的端口號對應提供不同服務的程序。比如80號端口是HTTP端口,當要申請主機的HTTP服務時,我們將申請信息發送到指定IP的80號端口的數據結構內。這時主機會監聽到80號端口有服務請求,自動調用HTTP服務進程進行服務。

????????? ? 如果說IP地址是你家房子的地址,那么端口就是你家的門(這個房子確實門多了點)。不同的訪客走不同的門,行賄的家伙一定要走后門(不排除小偷翻窗戶的可能) ? 。 當你聽到后門有人敲門的時候,嘿嘿......

?

????? (3) Socket 套接字

?????? 有的時候,多個應用程序可能同時需要向同一個接口發送數據 ? ? ? 。為了區別不同的應用程序進程和連接 ? ,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字(Socket)的接口。

????? ? 區分不同應用程序進程間的網絡通信和連接,主要有3個參數:通信的目的IP地址、使用的傳輸層協議(TCP或UDP)和使用的端口號。Socket原意 是 “插座”。通過將這3個參數結合起來,與一個“插座”Socket綁定,應用層就可以和傳輸層通過套接字接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的并發服務。

  ? ? Socket可以看成在兩個程序進行通訊連接中的一個端點,是連接應用程序和網絡驅動程序的橋梁,Socket在應用程序中創建,通過綁定與網絡驅動 建立關系。此后,應用程序送給Socket的數據,由Socket交網絡驅動程序向網絡上發送出去。計算機從網絡上收到與該Socket綁定IP地址和端 口號相關的數據后,由網絡驅動程序交給Socket,應用程序便可從該Socket中提取接收到得數據,網絡應用程序就是這樣通過Socket進行數據的 發送與接收的。 ?
?

?????????? ?? ? 初始網絡進程通信

????? ? 了解了基于TCP/IP協議的網間進程通信的部分概念之后,現在我想寫一個Java版的C-S通信程序。既然應用程序需要通過"套接字"向網絡發出請求或者應答網絡請求。我們自然要為客戶端和服務器端的程序創建自己的Socket。

?????? 還好,JDK中就有我們想要的東西——Socket和ServerSocket類。簡單介紹一下這兩個類:

??? ? Socket類用于客戶端,為建立網絡連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。

????? ServerSocket類用于服務器端,他可以創建綁定到特定端口的服務器套接字。當監聽到端口內容時,他將創建一個用于鏈接的Socket對象。

????? 對于一個網絡連接來說,套接字是平等的,并沒有差別,不因為在服務器端或在客戶端而產生不同級別。不管是Socket還是 ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。

?

Java代碼 ? ? 收藏代碼
  1. //客戶端程序,用于向服務器端發送一句“hello?server!” ??
  2. import ?java.net.*;??
  3. import ?java.io.*;??
  4. public ? class ?Client{??
  5. ???? private ?String?ipTo= "172.16.129.13" ; //服務器端IP地址 ??
  6. ???? private ? int ?port= 8189 ; //需要通過的服務器端口號 ??
  7. ??????
  8. ???? public ? void ?hello(){??
  9. ???????? try {??
  10. ??????????????????????? //創建一個流套接字并將其連接到指定?IP?地址的指定端口號。? ??
  11. ????????????Socket?clientSocket= new ?Socket(ipTo,port);??
  12. ???????????? try {??
  13. ????????????????System.out.println( "success?connection...." );??
  14. ???????????????????????????????? //返回此套接字的輸出流 ??
  15. ????????????????OutputStream?os=clientSocket.getOutputStream();??
  16. ????????????????PrintWriter?pw= new ?PrintWriter(os, true );??
  17. ????????????????????pw.println( "hello?server!" );??
  18. ????????????}??
  19. ???????????? finally {??
  20. ????????????????clientSocket.close();??
  21. ????????????}??
  22. ????????} catch (IOException?e){??
  23. ????????????e.printStackTrace();??
  24. ????????}??
  25. ????}??
  26. ??
  27. ???? public ? static ? void ?main(String[]?args)??
  28. ????{??
  29. ????????Client?client= new ?Client();??
  30. ????????client.hello();??
  31. ????}??
  32. }??
Java代碼 ? ? 收藏代碼
  1. //服務器端程序,用于接受客戶端的信息 ??
  2. import ?java.net.*;??
  3. import ?java.io.*;??
  4. public ? class ?Server{??
  5. ???? private ? int ?lisenerPort= 8189 ; //監聽端口 ??
  6. ??
  7. ???? private ? void ?lisener(){??
  8. ???????? try {??
  9. ?????????????????????? //創建服務器端套接字,用于綁定指定端口 ??
  10. ????????????ServerSocket?serverSocket= new ?ServerSocket(lisenerPort);??
  11. ?????????????????????? //監聽綁定的端口,用于產生阻塞,直到接受到一個來自客戶端的有效連接,并且返回一個客戶端的Socket對象實例。 ??
  12. ????????????Socket?socket=serverSocket.accept();??
  13. ???????????? try {??
  14. ???????????????????????????????? //創建套接字輸入流 ??
  15. ????????????????InputStream?is=socket.getInputStream();??
  16. ????????????????BufferedReader?br= new ?BufferedReader( new ?InputStreamReader(is));??
  17. ???????????????????????????????? //服務器端顯示來自客戶端的問候 ??
  18. ????????????????System.out.println(br.readLine());??
  19. ????????????}??
  20. ???????????? finally {??
  21. ????????????????serverSocket.close();??
  22. ????????????}??
  23. ????????} catch (IOException?e)??
  24. ????????{??
  25. ????????????e.printStackTrace();??
  26. ????????}??
  27. ????}??
  28. ???? public ? static ? void ?main(String[]?args)??
  29. ????{??
  30. ????????Server?server= new ?Server();??
  31. ????????server.lisener();??
  32. ????}??
  33. ??
  34. }??
?

初始網絡進程通信


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美一级α片毛片免费观看 | 色综合久久98天天综合 | 亚洲精品一区二区手机在线 | 成人在线视频国产 | 久久久久久综合对白国产 | 久久福利资源国产精品999 | 日韩高清性爽一级毛片免费 | 国产福利一区二区在线精品 | 97久久精品国产精品青草 | 真实的国产乱xxxx在线播放 | 中文字幕一区二区三区视频在线 | 欧美一区二区三区香蕉视 | 国产亚洲女人久久久久久 | 91久久综合 | 九九精品视频一区二区三区 | 日韩免费在线观看 | 国产三级久久久精品麻豆三级 | 欧美日韩中文字幕久久伊人 | 精品久久九九 | 国产精品免费视频一区一 | 国内精品视频一区 | 999热成人精品国产免 | 尤物精品国产福利网站 | 日本欧美在线播放 | 亚洲精品一区二区三区在线看 | 日日摸夜夜夜夜夜添 | 多色视频 | 欧美天天干 | 精品综合久久久久久97超人该 | 久草国产精品视频 | 五月天婷婷免费视频 | 伊人网综合在线观看 | 奇米色吧 | 一级毛片秋霞特色大片 | 成人婷婷| 久久综合热88 | 国产成人aa在线观看视频 | 神马啪啪 | 免费福利视频在线观看 | 欧美色综合图区 | 夜夜夜夜猛噜噜噜噜噜 |