根據前面所介紹的內容,本節介紹下網路位址初始化的方法。網路位址初始化本質上就是對sockaddr_in結構體進行賦值
#include
#include // memset
#include // sockaddr_in
int main(int argc, char *ar**)
const char *server_ip = "127.0.0.1"; // 本機ip位址字串
int server_port = 0x1234; // 埠號
struct sockaddr_in address;
memset(&address, 0, sizeof(address));
address.sin_family = af_inet; // 位址族,ipv4
address.sin_port = htons(server_port); // 埠賦值
address.sin_addr.s_addr = inet_addr(server_ip); // ip位址賦值
printf("埠網路位元組序:%#x\n", address.sin_port);
return 0;
第2行引入標頭檔案string.h,memset函式的標頭檔案。
第3行引入標頭檔案arpa/inet.h, sockaddr_in結構體的標頭檔案。
第7~8行定義了乙個ip位址和埠,其中127.0.0.1表示本地主機位址。
第11行memset函式將網路位址每個位元組初始化為0,這樣可以保證將sockaddr_in結構體的sin_zero字元陣列均初化為0。
第13~15行對網路位址的三個字段進行賦值,其中埠和ip位址均轉化為網路位元組序進行賦值。
右側開啟address_init_test.c檔案,完成網路位址初始化,並編譯測試。
C6678網口初始化失敗
c6678的網路協處理器netcp模組有兩個對外千兆網口,但pdk提供的網口驅動示例只支援單網口,需要做修改。採用多核導航器描述符中的乙個欄位來區分兩個網口完成了這一任務。使用了幾個月後沒有出現大的問題。然而某一天當工程的優化屬性配置為o3優化時,網口啟動有一定概率失敗。將o3優化取消再測,則啟動一...
linux核心初始化
1 系統的引導和初始化 linux 系統的引導有好幾種方式 常見的有 lilo,loadin引導和linux的自舉引導 bootsect loader 而後者所對應源程式為arch i386 boot bootsect.s,它為實模式的匯程式設計序,無論是哪種引導方式,最後都要跳轉到 arch i3...
Linux 硬碟初始化
以下操作在虛擬機器裡執行 虛擬機器裡的硬碟一般就是安裝系統的20g虛擬硬碟 名稱是 sda 新增一塊硬碟 那就是 sdb 啦 如果想使用 sdb 就得先格式化成一種型別 比如 ext4 xfs 啥的 但是格式化前 檢視 sdb 型別 file s dev sdb 顯示的是 dev sdb data ...