做Socket通信之前,我們首先要實現幾個基本的功能
獲取本機IP地址(如果我們要做Socket的服務器,肯定不希望用戶每次填寫本機IP地址,而是自動獲取本機IP地址,這一點我們最好能做的比已有的軟件更合理,更好用),下面的方法簡單實現了獲取本機IP地址,后面一個方法還把IPV6的地址也得到了,但是目前還沒有什么用處(可能以后用得到)
能PING通一個遠程的IP地址(如果我們要做Socket的客戶端,最好在連接之前能知道目標IP能不能連接上,如果不能PING通,則直接告訴用戶網絡連接有問題就行了,此外還能做心跳包,比如QQ斷線檢測,每隔一定時間PING通就認為網絡連接正常,否則認為網絡有問題,所以這個功能還是比較實用的)
能從一個網址解析出他對應的IP地址(這個在自動化領域應用不是很廣泛,因為這個行業里面不管是Socket的服務器還是客戶端都是一些小設備,IP地址都是自己設置上去的,不會牽扯到某個網址的IP,但是為了把這個類做的比較全,也可以加深對Socket相關類的理解,還是有必要涉及一下,讀者至少需要明白其實一個網址就是一個IP地址)
了解什么是服務器,什么是客戶端(給別人提供服務的就是服務器,享受服務的就是客戶端,就像賓館提供房間,客戶才能入住),我們可以先用第三方的軟件測試一下(在附件程序中打開SocketTest這個工具,它本身是JAVA寫的,但是很短小很精悍,我們本節教程目的也是實現這樣一個功能),首先是Server端開啟某個Port,然后Client端連接上去,然后就可以互相發消息,當然也可以斷開連接等等(要切記首先必須服務器開啟服務,客戶端才能連接,如果賓館的某個房間不開放,那客戶端就沒法進去,至於房間開放,客戶進去之后,誰跟誰說話都是可以的)
其次要知道Socket通信的意義,因為他是基於以太網的通訊協議,比串口,總線都要簡單的多,也好用的多,基本上大部分的工業設備都會支持這個協議,而且不受限於操作系統,微軟的,安卓的,Linux,MaxOS的都可以互相發消息。即便是在同一台計算器上,不同軟件之間也可以互相通信,所以把這個通信研究好的意義還是很大的(在下面的測試中,我用了一個另外的調試工具跟SocketTest做通訊測試,像這樣的網絡調試助手網上很容易找到)
最后來看一下百度百科對Socket的解釋,比較形象(他比喻成插座)
https://baike.baidu.com/item/socket/281150?fr=aladdin
更多教學視頻和資料下載,歡迎關注以下信息:
我的優酷空間:
http://i.youku.com/acetaohai123
我的在線論壇:
http://csrobot.gz01.bdysite.com/
問題交流:
QQ:910358960
