2013-04-04 91 views

回答

3

sk_buff是作爲內核TCP/IP棧的一部分的內核結構。你不需要直接碰到這個,實際上很難做到這一點。

您需要的是學習用於網絡通信的用戶空間API。爲了快速學習Unix上的網絡通信基礎知識,很難擊敗Beej's Guide

+0

非常感謝您的回答。請告訴我在什麼情況下我們必須使用sk_buff或其他網絡內核類。這會讓我很好地理解這個概念。 – Ashwin 2013-04-04 13:14:48

+0

@Ashwin如果你在TCP/IP協議棧上做內核級的工作,那麼你將需要使用這個。這是我能想到的最簡單的解釋方式,因爲它包含了很多。我想說,程序員爲Linux編寫的大部分網絡代碼都不需要這些。你應該編碼到POSIX標準,而不是內核中的內容。 – 2013-04-04 14:08:36

+0

@Ashwin你是否理解用戶空間和內核空間之間的區別? – 2013-04-04 14:09:20

2

如果你想創建一個聊天軟件,我會建議你去檢查BSD套接字或任何Linux的TCP/IP網絡指南。您不需要了解內核中發生的事情,以編寫聊天軟件。

如果您想要創建新的設備驅動程序,但您似乎高於協議級別,則sk_buff是相關的。

如果你想創建一個聊天,你可以創建一個服務器套接字(監聽器)和客戶端,它們連接到服務器正在監聽的地址並通過TCP/IP交換信息。

1

sk_buff是套接字緩衝區的內核數據結構。您無需爲聊天服務器觸摸它。如果你使用了一個OS類,你一定注意到有一個進程結構(Linux中的struct proc),但是這意味着當你編寫一個程序時你必須使用它嗎?號sk_buff是一個類似的情況,Linux內核使用它來緩衝某些數據。你不必關心它。

對於你的聊天服務器,看一看Beej的指南,如果我沒有錯,它有一個Chat Server的實現,它是我知道開始使用Linux上的網絡編程的最佳指南,並充滿了幽默感。爲了更深入地瞭解網絡編程,請參閱Richard Stevens Unix Network Programming,第1卷和第2卷。它被認爲是網絡編程的聖經。