一、 客戶端網路編程步驟
客戶端(Client)是指網路編程中首先發起連接的程序,客戶端一般實現程序界面和基本邏輯實現,在進行實際的客戶端編程時,無論客戶端復雜還是簡單,以及客戶端實現的方式,客戶端的編程主要由三個步驟實現:
1、 建立網路連接
客戶端網路編程的第一步都是建立網路連接。在建立網路連接時需要指定連接到的伺服器的IP地址和埠號,建立完成以後,會形成一條虛擬的連接,後續的操作就可以通過該連接實現數據交換了。
2、 交換數據
連接建立以後,就可以通過這個連接交換數據了。交換數據嚴格按照請求響應模型進行,由客戶端發送一個請求數據到伺服器,伺服器反饋一個響應數據給客戶端,如果客戶端不發送請求則伺服器端就不響應。
根據邏輯需要,可以多次交換數據,但是還是必須遵循請求響應模型。
3、 關閉網路連接
在數據交換完成以後,關閉網路連接,釋放程序佔用的埠、內存等系統資源,結束網路編程。
最基本的步驟一般都是這三個步驟,在實際實現時,步驟2會出現重復,在進行代碼組織時,由於網路編程是比較耗時的操作,所以一般開啟專門的現場進行網路通訊。
二、伺服器端網路編程步驟
伺服器端(Server)是指在網路編程中被動等待連接的程序,伺服器端一般實現程序的核心邏輯以及數據存儲等核心功能。伺服器端的編程步驟和客戶端不同,是由四個步驟實現,依次是:
1、 監聽埠
伺服器端屬於被動等待連接,所以伺服器端啟動以後,不需要發起連接,而只需要監聽本地計算機的某個固定埠即可。
這個埠就是伺服器端開放給客戶端的埠,伺服器端程序運行的本地計算機的IP地址就是伺服器端程序的IP地址。
2、 獲得連接
當客戶端連接到伺服器端時,伺服器端就可以獲得一個連接,這個連接包含客戶端的信息,例如客戶端IP地址等等,伺服器端和客戶端也通過該連接進行數據交換。
一般在伺服器端編程中,當獲得連接時,需要開啟專門的線程處理該連接,每個連接都由獨立的線程實現。
3、 交換數據
伺服器端通過獲得的連接進行數據交換。伺服器端的數據交換步驟是首先接收客戶端發送過來的數據,然後進行邏輯處理,再把處理以後的結果數據發送給客戶端。簡單來說,就是先接收再發送,這個和客戶端的數據交換數序不同。
其實,伺服器端獲得的連接和客戶端連接是一樣的,只是數據交換的步驟不同。
當然,伺服器端的數據交換也是可以多次進行的。
在數據交換完成以後,關閉和客戶端的連接。
4、 關閉連接
當伺服器程序關閉時,需要關閉伺服器端,通過關閉伺服器端使得伺服器監聽的埠以及佔用的內存可以釋放出來,實現了連接的關閉。
其實伺服器端編程的模型和呼叫中心的實現是類似的,例如移動的客服電話10086就是典型的呼叫中心,當一個用戶撥打10086時,轉接給一個專門的客服人員,由該客服實現和該用戶的問題解決,當另外一個用戶撥打10086時,則轉接給另一個客服,實現問題解決,依次類推。
在伺服器端編程時,10086這個電話號碼就類似於伺服器端的埠號碼,每個用戶就相當於一個客戶端程序,每個客服人員就相當於伺服器端啟動的專門和客戶端連接的線程,每個線程都是獨立進行交互的。
這就是伺服器端編程的模型,只是TCP方式是需要建立連接的,對於伺服器端的壓力比較大,而UDP是不需要建立連接的,對於伺服器端的壓力比較小罷了。
㈡ java網路編程方向具體該怎麼去學
以前在遠標學時java的大方向就是j2ee
j2ee不僅僅是socket編程,具體包括13中核心技術。
J2EE的核心API與組件
J2EE平台由一整套服務(Services)、應用程序介面(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的13種技術規范進行簡單的描述(限於篇幅,這里只能進行簡單的描述):
1. JDBC(Java Database Connectivity):
JDBC API為訪問不同的資料庫提供了一種統一的途徑,象ODBC一樣,JDBC對開發者屏蔽了一些細節問題,另外,JDCB對資料庫的訪問也具有平台無關性。
2. JNDI(Java Name and Directory Interface):
JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操作企業級的資源如DNS和LDAP,本地文件系統,或應用伺服器中的對象。
3. EJB(Enterprise JavaBean):
J2EE技術之所以贏得媒體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發和實施分布式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度復雜的企業級應用的開發。EJB規范定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩沖池以及容錯性。但這里值得注意的是,EJB並不是實現J2EE的唯一途徑。正是由於J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。
4. RMI(Remote Method Invoke):
正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和伺服器端傳遞數據。RMI是一種被EJB使用的更底層的協議。
5. Java IDL/CORBA:
在Java IDL的支持下,開發人員可以將Java和CORBA集成在一起。他們可以創建Java對象並使之可在CORBA ORB中展開, 或者他們還可以創建Java類並作為和其它ORB一起展開的CORBA對象的客戶。後一種方法提供了另外一種途徑,通過它Java可以被用於將你的新的應用和舊的系統相集成。
6. JSP(Java Server Pages):
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。伺服器在頁面被客戶端所請求以後對這些Java代碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。
7. Java Servlet:
Servlet是一種小型的Java程序,它擴展了Web伺服器的功能。作為一種伺服器端的應用,當被請求時開始執行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成並且生成HTML。
8. XML(Extensible Markup Language):
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數據。
XML的發展和Java是相互獨立的,但是,它和Java具有的相同目標正是平台獨立性。通過將Java和XML的組合,您可以得到一個完美的具有平台獨立性的解決方案。
9. JMS(Java Message Service):
MS是用於和面向消息的中間件相互通信的應用程序介面(API)。它既支持點對點的域,有支持發布/訂閱(publish/subscribe)類型的域,並且提供對下列類型的支持:經認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另
一種方式來對您的應用與舊的後台系統相集成。
10. JTA(Java Transaction Architecture):
JTA定義了一種標準的API,應用系統由此可以訪問各種事務監控。
11. JTS(Java Transaction Service):
JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規范,並且在較底層實現OMG OTS specification的Java映像。JTS事務管理器為應用伺服器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。
12. JavaMail:
JavaMail是用於存取郵件伺服器的API,它提供了一套郵件伺服器的抽象類。不僅支持SMTP伺服器,也支持IMAP伺服器。
13. JAF(JavaBeans Activation Framework):
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的位元組流可以被轉換成Java對象,或者轉換自Java對象。大多數應用都可以不需要直接使用JAF。
第一個階段(java基礎階段)
1.java語法
2.面向對象
3.常用的api
4.界面編程
5.多線程
6.文件io
7.java網路編程..
第二個階段 (資料庫階段)
1.oracle
2.mysql
3.sql server
目前中國軟體公司用的最多的三大主流資料庫是sql server,mysql ,oracle .目前看來oracle資料庫越來越流行了。一般情況下PHP對應MySQL資料庫;ASP對應SQL資料庫;JSP對應ORACLE資料庫。所以大家會經常看
到市場上JAVA培訓都是用的ORACLE資料庫,其實你學會了ORACLE資料庫,再去學習MySQL、SQL數 據庫,你會覺得有很多相似的之處,學起來也容易上手了。oracle我推薦
韓順平老師 oracle視頻 (韓老師授課很有趣,特適合基礎不太好的人。講課有一套)
第三個階段 (web開發階段)
1.html
2.css
3.javascript
這三個部分是進行web開發的必須技術.一定要好好學習.不過我當時沒有發現有講的特別好的。好像很多老師都講框架和後台,界面這塊不多,所以就沒有什麼好推薦的了,大家可以
在網上找找看看,<<別具光芒>> 這本書講的挺好,不過不太適合初學者,可以看看孫鑫老師視頻的《HTML語言速成》。
第四個階段 (j2ee 中級部分)
1.servlet
2.jsp
3.mvc
這個階段是接近企業的需求了,所以學習起來,難度偏大,如果前面沒有學習扎實,會比較麻煩,我就是這樣的,前面沒有吃透,就學習j2ee 中級,搞得我消化不良。所以小弟我中心的告誡大家,把前面的學好,再學習第四個階段,這里的mvc思想不太好理解,是學習的重點。同時要學習tomcat/jboss/wl 這些伺服器所以,你可能感到要學習的東西一下多了很多,其實我就在這里動搖過,有那麼一段時間,又想放棄了。可是一想到 房東那種不屑的表情,我就想,一定要好好學習,混出個人樣來。我家是農村的,回去就是種地,當公務員我沒有關系,再說會老家我學習的專業也用不上,要不就是當個網管什麼的,不說了,反正當時心情很復雜吧。這個階段我推薦
第五個階段 (j2ee 高級部分)
1.struts
2.hibernate
3.spring
學習完Servlet、JSP然後再去學習框架Struts、Hibernate、Spring等最前沿的最流行的網路編程必備的軟體技能。
推薦的參考書籍是美河圖書提供《Servlet與JSP核心編程》
框架的基礎就是Servlet、JSP。首先大家應該學習的是Struts框架,典型的MVC模型。推薦學習視頻是 張小靜的Struts視頻。(網上有孫鑫的視頻嘛,主要就是講的Struts、Hibernate、Spring這三個框架,但是這個好像是偷錄的效果不好,聽起來比較吃力,銜接的不好)
最後關於Spring框架的視頻,在網上你可以搜索到很多,但是系統講解的真的沒有發現,本著對大家負責的態度,不敢亂推薦,大家到網上搜一下,也許現在有了也可能。
學完上述三個階段的內容,就在看看xml,ajax,ejb這些知識!尤其是的Ajax用得非常火,我們公司就用,ajax的框架流行的是(jquery,dw),我們公司用的是jquery.這里提一 下,學習Ajax之前一定要有JavaScript的基礎,推薦視頻張孝祥JavaScript網頁開發,這套視頻有相應 的配套書籍《JavaScript網頁開發》
㈢ 誰有《網路機器人 JAVA編程指南》的BOT包,發我一個 謝謝啦 E_MAIL:[email protected]
不給分,不發
㈣ Java開發網路爬蟲 看什麼書
1,網路機器人Java編程指南,淺顯易懂,有點過時,但適合新手
2,自己動手寫網路爬蟲,有點基礎還可以看看,寫的有點亂,很多內容交代不清楚,並且大篇幅代碼抄襲。。。
3,搜索引擎 ——原理、技術與系統,北大天網為案例,很好很強大,有點學術味道
4,Web數據挖掘 Bing Liu,劉兵的書,強烈推薦
5,搜索引擎:信息檢索實踐,很好的書,強烈推薦
還有一些論文,自己去找吧
案例的話,可以研究下Nutch爬蟲部分代碼,寫的很清晰
有了以上這些,應該算是入門了
㈤ 如何用java編寫一個聊天機器人 那裡有教程可以學~~
聊天機器人也就是socket和server,你在他們里邊都加上一個線程,互相監聽,通過輸入和輸出流傳遞信息,然後你從socket端輸入一句話,寫入流,然後server端讀取,處理一下再寫入流,然後你socket讀取,這就是一個簡單的相應了,server端就會等待socket端的下次相應,這太簡單了,估計網上不會有這樣的教程,你可以大致的參考一下這個思路
㈥ 我想用c編寫一個爬蟲程序,可是看完一本c語言教程後,還是覺得只會編寫一些計算類的小代碼,要學會編寫
想做爬蟲程序不是學完語言就行了,是要學很多東西的,你可以查一查大學計算機專業有哪些課程。
做爬蟲可以學學java語言。
《網路機器人Java編程指南》
開源的爬蟲產品
http://www.oschina.net/project/tag/64/spider?lang=19&os=0&sort=view&p=1
㈦ JAVA機器人走迷宮的編程——急求!
深度優先的迷宮圖演算法。
N年前的老問題了。
10分不值得做。
㈧ java編寫一個智能聊天機器人,請大神行行好寫個
簡單的可以使用HashMap把問答對應起來,一個問題可以有多個回答.然後隨機返回1個
當然了這肯定不智能.只能簡單玩玩.
需要復雜的聊天機器人,需要自然語義分析、機器學習和深度神經網路方面的技術
一個人獨立寫還是很困難的.
解決方案 :
調用第三方的聊天機器人介面
介面一般都是提交一個請求(請求的參數里包含你提交的問),返回一個JSON,然後從JSON里解析出想要的回答(字元串)就可以了
聊天機器人API或者聊天機器人介面網上有的
㈨ 如何用java編寫一個可以受我電腦遠程式控制制的會走的機器人(不是樂高,高:大約70cm)
JAVA 使用藍牙、WIFI,將命令傳輸給機器人。。。。。。。。機器人的控制,可復雜了。。。。。