一種復(fù)位socket連接的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)通信技術(shù)領(lǐng)域,特別涉及一種復(fù)位socket連接的方法和裝置。
【背景技術(shù)】
[0002]在計(jì)算機(jī)之間建立socket連接或者在分布式設(shè)備的控制器之間建立socket連接,是實(shí)現(xiàn)計(jì)算機(jī)之間或者分布式設(shè)備的控制器之間通信的基礎(chǔ),一旦socket連接鏈路斷開,將導(dǎo)致通信中斷,因此,常常需要復(fù)位socket連接才能繼續(xù)通信。
[0003]目前,復(fù)位socket連接的過程主要是:當(dāng)socket連接不能正常傳輸數(shù)據(jù)時(shí),業(yè)務(wù)模塊將接收到該不能正常通信的通知,該通知以一定形式展現(xiàn)給用戶,用戶在接收到該通知后,通過向業(yè)務(wù)模塊發(fā)送請(qǐng)求,以觸發(fā)業(yè)務(wù)模塊對(duì)socket連接進(jìn)行復(fù)位,以使通信恢復(fù)正常。例如:瀏覽器作為業(yè)務(wù)模塊,當(dāng)socket連接異常時(shí),該瀏覽器將接收到該不能正常通信的通知,該通知以網(wǎng)頁(yè)無(wú)法打開的方式展現(xiàn)給用戶,用戶通過刷新瀏覽器的網(wǎng)頁(yè),就可以觸發(fā)業(yè)務(wù)模塊對(duì)socket連接進(jìn)行復(fù)位,以使通信恢復(fù)正常即可以正常瀏覽網(wǎng)頁(yè),即在現(xiàn)有技術(shù)中,需要人為干預(yù)才能實(shí)現(xiàn)復(fù)位socket連接。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種復(fù)位socket連接的方法和裝置,使復(fù)位socket連接具有自動(dòng)性。
[0005]—種復(fù)位socket連接的方法,將客戶端的第一 socket和服務(wù)端的第二 socket進(jìn)行連接,進(jìn)行所述客戶端和所述服務(wù)端間的數(shù)據(jù)傳輸,還包括:
[0006]確定所述客戶端和所述服務(wù)端間的數(shù)據(jù)傳輸異常;
[0007]設(shè)置所述第一 socket的狀態(tài)為暫停狀態(tài),并關(guān)閉所述第一 socket的連接;
[0008]確認(rèn)所述第一 socket的五元組記錄的第一五元組值;
[0009]將所述第一五元組值綁定連接請(qǐng)求;
[0010]將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket。
[0011]優(yōu)選地,該方法進(jìn)一步包括:設(shè)置定時(shí)器,并為所述定時(shí)器設(shè)置超時(shí)時(shí)間;
[0012]在所述關(guān)閉所述第一 socket的連接之后,在所述確認(rèn)所述第一 socket的五元組記錄的第一五元組值之前,進(jìn)一步包括:
[0013]設(shè)置所述第二 socket狀態(tài)為暫停狀態(tài),關(guān)閉所述第二 socket的連接;
[0014]啟動(dòng)所述定時(shí)器;
[0015]所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket,包括:在所述定時(shí)器設(shè)置的超時(shí)時(shí)間范圍內(nèi),將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給戶斤述第二 socket。
[0016]優(yōu)選地,在所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二socket之后,進(jìn)一步包括:
[0017]當(dāng)所述第一 socket和所述第二 socket成功連接時(shí),停止所述定時(shí)器;
[0018]當(dāng)超出所述定時(shí)器設(shè)置的超時(shí)時(shí)間,所述第一 socket和所述第二 socket仍未成功連接時(shí),向所述客戶端的業(yè)務(wù)模塊發(fā)送通知。
[0019]優(yōu)選地,該方法進(jìn)一步包括:在所述第一 socket設(shè)置第一緩存隊(duì)列;
[0020]在所述確定所述客戶端和所述服務(wù)端間的數(shù)據(jù)傳輸異常之后,進(jìn)一步包括:將所述客戶端向所述服務(wù)端發(fā)送的數(shù)據(jù)請(qǐng)求存儲(chǔ)在所述第一緩存隊(duì)列;
[0021]在所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket之后,進(jìn)一步包括:當(dāng)所述第一 socket和所述第二 socket連接恢復(fù)后,將所述存儲(chǔ)在所述第一緩存隊(duì)列中的數(shù)據(jù)請(qǐng)求發(fā)送給所述服務(wù)端。
[0022]優(yōu)選地,該方法進(jìn)一步包括:在所述第二 socket設(shè)置第二緩存隊(duì)列;
[0023]在所述確定所述客戶端和所述服務(wù)端間的數(shù)據(jù)傳輸異常之后,進(jìn)一步包括:將所述服務(wù)端向所述客戶端發(fā)送的數(shù)據(jù)存儲(chǔ)在所述第二緩存隊(duì)列;
[0024]在所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket之后,進(jìn)一步包括:當(dāng)所述第一 socket和所述第二 socket連接恢復(fù)后,將所述存儲(chǔ)在所述第二緩存隊(duì)列中的數(shù)據(jù)發(fā)送給所述客戶端。
[0025]優(yōu)選地,該方法進(jìn)一步包括:確定所述第二 socket記錄的第二五元組值;
[0026]在所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket之后,進(jìn)一步包括:
[0027]并將所述第一五元組值與所述第二 socket記錄的第二五元組值進(jìn)行對(duì)比;
[0028]如果所述第一五元組值與所述第二五元組值相同,則恢復(fù)所述第一 socket與所述第二 socket的連接。
[0029]優(yōu)選地,所述五元組值,包括:源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)和協(xié)議;
[0030]所述將所述第一五元組值綁定連接請(qǐng)求,包括:將所述源IP地址和所述源端口號(hào)綁定連接請(qǐng)求;
[0031]所述將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket,包括:將所述綁定了源IP地址和源端口號(hào)連接請(qǐng)求,發(fā)送給所述目的IP地址、所述目的端口號(hào)和所述協(xié)議對(duì)應(yīng)的所述第二 socket。
[0032]一種復(fù)位socket連接的裝置,包括:
[0033]第一確定單元,用于確定所述客戶端和所述服務(wù)端間的數(shù)據(jù)傳輸異常;
[0034]第一設(shè)置單元,在所述第一確定單元確定數(shù)據(jù)傳輸異常后,用于設(shè)置所述第一socket的狀態(tài)為暫停狀態(tài),并關(guān)閉所述第一 socket的連接;
[0035]第二確定單元,用于確認(rèn)處于暫停狀態(tài)的所述第一 socket的五元組記錄的第一五元組值;
[0036]發(fā)送請(qǐng)求單元,用于將所述第二確定單元確認(rèn)的第一五元組值綁定連接請(qǐng)求,并將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket。
[0037]優(yōu)選地,該裝置進(jìn)一步包括:第二設(shè)置單元和定時(shí)器單元,其中,
[0038]所述第二設(shè)置單元,用于在所述第一 socket的狀態(tài)為暫停狀態(tài)時(shí),設(shè)置所述第二socket狀態(tài)為暫停狀態(tài),關(guān)閉所述第二 socket的連接;
[0039]所述定時(shí)器單元,用于設(shè)置定時(shí)器,為所述定時(shí)器設(shè)置超時(shí)時(shí)間,并在所述第二socket狀態(tài)為暫停狀態(tài)時(shí),啟動(dòng)所述定時(shí)器;
[0040]所述發(fā)送請(qǐng)求單元,用于在所述定時(shí)器單元為所述定時(shí)器設(shè)置的超時(shí)時(shí)間范圍內(nèi),將所述綁定了所述第一五元組值的連接請(qǐng)求發(fā)送給所述第二 socket。
[0041]優(yōu)選地,該裝置進(jìn)一步包括:發(fā)送通知單元,其中,
[0042]所述定時(shí)器單元,進(jìn)一步用于當(dāng)所述第一 socket和所述第二 socket成功連接時(shí),停止所述定時(shí)器;
[0043]所述發(fā)送通知單元,用于當(dāng)超出所述定時(shí)器設(shè)置的超時(shí)時(shí)間,所述第一 socket和所述第二 socket仍未成功連接時(shí),向所述客戶端的業(yè)務(wù)模塊發(fā)送通知。
[0044]優(yōu)選地,該裝置進(jìn)一步包括:第一緩存單元,其中,
[0045]所述第一緩存單元,用于在所述第一 socket設(shè)置第一緩存隊(duì)列,在所述第一設(shè)置單元設(shè)置所述第一 socket處于暫停狀態(tài)時(shí),將所述客戶端向所述服務(wù)端發(fā)送的數(shù)據(jù)請(qǐng)求存儲(chǔ)在所述第一緩存隊(duì)列;當(dāng)所述第一 socket和所述第二 socket連接恢復(fù)后,將所述存儲(chǔ)在所述第一緩存隊(duì)列中的數(shù)據(jù)請(qǐng)求發(fā)送給所述服務(wù)端。
[0046]優(yōu)選地,該裝置進(jìn)一步包括:第二緩存單元,其中,
[0047]所述第二緩存單元,用于在所述第二 socket設(shè)置第二緩存隊(duì)列,在所述第一設(shè)置單元設(shè)置所述第一 socket處于暫停狀態(tài)時(shí),將所述服務(wù)端向所述客戶端發(fā)送的數(shù)據(jù)存儲(chǔ)在所述第二緩存隊(duì)列;當(dāng)所述第一 socket和所述第二 socket連接恢復(fù)后,將所述存儲(chǔ)在所述第二緩存隊(duì)列中的數(shù)據(jù)發(fā)送給所述客戶端。
[0048]優(yōu)選地,該裝置進(jìn)一步包括:
[0049]對(duì)比單元,用于確定所述第二 socket記錄的第二五元組值,并將所述第一五元組值與所述第二 socket記錄的第二五元組值進(jìn)行對(duì)比;
[0050]如果所述第一五元組值與所述第二五元組值相同,則恢復(fù)所述第一 socket與所述第二 socket的連接。
[0051]優(yōu)選地,所述五元組值,包括:源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)和協(xié)議;
[0052]所述發(fā)送請(qǐng)求單元,用于將所述源IP地址和所述源端口號(hào)綁定連接請(qǐng)求,并將所述綁定了源IP地址和源端口號(hào)連接請(qǐng)求,發(fā)送給所述目的IP地址、所述目的端口號(hào)和所述協(xié)議對(duì)應(yīng)的所述第二 socket。
[0053]本發(fā)明實(shí)施例提供了一種復(fù)位socket連接的方法和裝置,該方法包括:將客戶端的第一 socket和服務(wù)端的第二 socket進(jìn)行連接,進(jìn)行所述客戶端和所述服務(wù)端