大家好,今天給各位分享關(guān)于tcp的socket編程的一些知識,其中也會對socket套接字編程進行解釋,文章篇幅可能偏長,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在就馬上開始吧!
UDP和TCP的socket一般分別用在什么地方
Socket是網(wǎng)絡(luò)通訊經(jīng)常采用的一種方式,它不是一個具體的物件也不是想http類的通訊協(xié)議。你可以把它看成是一組基于TCP和UDP通信協(xié)議的接口,Socket其實就是一個門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。
Socket基本概念在了解Socket之前你需要對計算機通訊的分層有個大概的了解,具體講解我在這里就不講了,放一張很好的圖分享給大家:
上面圖詳細講了基本整個計算機通信的分層架構(gòu),很多我也不了解沒我們只看我們關(guān)心的TCP/IP,其分層簡化圖示如下:
理解Socket好,了解了基本分層機構(gòu)后,我們現(xiàn)在來形象的理解一下Socket到底是什么。我這里有一個很形象的實例可以幫助我們很好的理解Socket,這也是我當初在學(xué)習Socket編程時自己領(lǐng)悟出來的,那就是物流。
我們要傳送的數(shù)據(jù)就是物流中的貨物,ip就是發(fā)貨人和收貨人的聯(lián)系方式,那么Socket是什么?大家想想這送貨這這一流程還缺少啥?對呀,物流公司啊,對吧!物流公司就是那個Socket,他負責幫你處理送貨的瑣碎事情,比如你的貨物該怎么打包、該怎么防止易碎物品破碎、該用什么方式運輸、等等,如果是境外貨物還牽涉到報關(guān)等等一系列復(fù)雜瑣碎的事情,這些物流公司(Socket)幫你處理好了。示意圖如下:
理解TCP與UDP的區(qū)別以及三次握手和四次揮手然后我們來說一下TCP和UDP的區(qū)別。前面講到Socket就相當于是物流公司,那么TCP協(xié)議就相當于是:假設(shè)你是寄貨方,你要寄給你朋友一份禮物,你首先得去物流公司去寄,這樣你再物流公司就相當于建立了一個事物(Socket實例)。然后物流公司有兩種服務(wù)方式讓你選擇(TCP和UDP)。
先說TCP,TCP這個協(xié)議它比較保守,物流公司說我必須確保你朋友會接收這份禮物,不然它不送。于是物流公司就回去聯(lián)系你朋友。然后聯(lián)系內(nèi)容大致如下:
物流:你好,我這里有個你朋友寄的禮物要給你,你收嗎?
你朋友:OK,收,什么時候發(fā),多久到?
物流:現(xiàn)在就發(fā),大概要12小時到。
然后物流才開始發(fā)貨,并且會給你們一個物流單號,這個單號就是關(guān)于這份貨物你和你朋友的發(fā)貨收貨憑證。這就是所謂的三次握手。示意圖:
物流發(fā)送完后還會聯(lián)系你朋友,大致對話內(nèi)容:
物流:你好,貨物已發(fā)送,請注意查收
你朋友:好的。
貨物送到,你朋友:OK,貨物收到,你們可以結(jié)案
物流:好的,我結(jié)案了。
這就是所謂的四次揮手(拜拜);
(注釋:三次握手四次揮手這都是Socket在你建立的時候根據(jù)你選擇的協(xié)議確定好的)
這樣是不是很麻煩,估計也就順豐有這服務(wù)了,其他大部分公司還是沒有這么貼心的服務(wù)的,他們可能就是UDP協(xié)議方式了。
UDP比較簡單,當你用物流(Socket)寄貨物的時候物流公司并不會管你朋友是否能聯(lián)系上,是否愿意接收,它只負責將你的貨物發(fā)出去就完事。這中間是不需要通知你朋友的,你和你朋友也不需要有連接,這就是所謂的無連接。
兩種協(xié)議區(qū)別和應(yīng)用UDP常用于一次性傳輸比較少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用中,UDP也常用于多媒體應(yīng)用(如IP電話、實時視頻會議、流媒體等),顯然,可靠數(shù)據(jù)傳輸對于這些應(yīng)用來說并不是最重要的,但TCP的擁塞控制會導(dǎo)致數(shù)據(jù)出現(xiàn)較大的延遲,這是它們不能容忍的,我們最熟悉的視頻通話大部分就是用的UDP協(xié)議。
TCP面向連接,即發(fā)送數(shù)據(jù)之前需要建立連接,并且TCP是擁有擁塞機制的,當前部分數(shù)據(jù)還沒有被接收完,后部分的數(shù)據(jù)會被阻塞知道前部分數(shù)據(jù)傳遞OK后才會繼續(xù)傳遞后半部分,所以通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復(fù),且按序到達;在數(shù)據(jù)完整性、安全性要求較高的場景需要使用TCP協(xié)議,比如你傳送重要辦公文件、圖片等,這些東西丟包都是會影響數(shù)據(jù)品質(zhì)的。
tcp只有socket嘛
tcp不是只有socket
??socket只是通信上一種通信方式,TCP是一種通信協(xié)議,我們所開發(fā)的程序大都都是基于TCP協(xié)議的socket通信,當然也可以使用其他協(xié)議來通過socket通信,比如UDP,更強悍的話,你可以自定義協(xié)議來通過socket進行網(wǎng)絡(luò)通信。
從OSI參考模型上來區(qū)分,socket是介于應(yīng)用層和傳輸層中間的一層中。提供了應(yīng)用程序調(diào)用其底層網(wǎng)絡(luò)請求的API。
請問PC端socket能和西門子PLCTCP通訊嗎
可以的,不過不支持公開的Modbustcp協(xié)議,西門子的是profinet協(xié)議。國產(chǎn)的矩形PLC,支持公開的Modbustcp主從協(xié)議。socket編程見附件文檔。
socket和tcp的區(qū)別
socket釋義:
n.插座;窩,穴;牙槽
vt.給…配插座
例句:
Isthecablelongenoughtoreachthesocket?
電線夠得著插座嗎?
詞組:
eyesocket眼窩;眼眶
switchsocketn.開關(guān)插座;開關(guān)燈座
powersocket電源插座
tcp釋義:
abbr.傳輸控制協(xié)議(TransmissionControlProtocol);終端控制協(xié)議(TerminalControlProtocol);技術(shù)合作計劃(TechnicalCooperationProgramme)
例句:
HerecruitedsomeoftheworkerstostartmakingspiralbulbsforTCP.
他招募了一些工人開始為TCP生產(chǎn)螺旋燈泡。
socket編程到底是什么
socket,即套接字,是網(wǎng)絡(luò)中的應(yīng)用程序之間雙向通信的端點。
介紹舉個形象的例子,我們每個人手中的智能手機,就是一個socket,這個socket攜帶了手機號碼,我們可以輸入別人的手機號碼,進行撥號通信,彼此進行語音聊天,也可以發(fā)送短信聊天。
可以撥打電話互相聊天,這個叫TCP協(xié)議。
可以發(fā)送短信單向聊天,這個叫UDP協(xié)議。
TCP和UDP協(xié)議的區(qū)別是,TCP需要你來我往的互相保持通信,UDP是單向的通信。
套接字的分類以TCP為代表的流套接字SOCK_STREAM,該類型的套接字能實現(xiàn)無差錯、無重復(fù)送,并按順序接收。以UDP為代表的數(shù)據(jù)報套接字SOCK_DGRAM,該類型的套接字無需保持連接,無法保證數(shù)據(jù)能被對方確切的收到,不可靠的,會出現(xiàn)數(shù)據(jù)丟失或重復(fù)的。除了上面2個套接字,還有一種是原始套接字SOCK_RAW,其他協(xié)議的收發(fā)使用該套接字。工作流程客戶端socket向服務(wù)端socket發(fā)送連接請求,服務(wù)端收到后會響應(yīng)客戶端,告知客戶端服務(wù)端已獲取到你的請求,客戶端再把數(shù)據(jù)部分和數(shù)據(jù)的協(xié)議頭發(fā)送給
示例代碼總結(jié)學(xué)習socket,可以通過視頻學(xué)習,現(xiàn)在網(wǎng)上比較多的這類視頻,不妨去看一看。另外,要多動手,自己寫一寫,代碼要多寫才能學(xué)得更快。
我是暗黑程序員,如果你對技術(shù)也有追求,對現(xiàn)實迷茫,請關(guān)注我。
關(guān)于本次關(guān)于tcp的socket編程和socket套接字編程的問題分享到這里就結(jié)束了,如果解決了您的問題,我們非常高興。