2007年11月3日 星期六

Value-Result

Socket address sturcture總是以reference(指標指向結構)傳進socket函式,而結構的大小也會被傳入。然而長度傳入的方法取決於process to kernel或是kernel to process

Process to Kernel(bind, connect, sendto)

struct sockaddr_in serveraddr;

bind(sockfd, (Struct sockaddr *) &serveraddr, sizeof(serveraddr));

長度的資訊是用來告訴該copy多少資料從process到kernel


Kernel to Process(accept, recvfrom, getsockname, getpeername)

struct sockaddr_in clientaddr;
socklen_t letngth;

length = sizeof(clientaddr);
getpeername( sockfd, (Struct sockaddr*) &clientaddr, &length)

其中,長度的值會改變。用指標傳入,告訴kernel所傳入的struture大小。而當函式結束時,會回傳kernel儲存多少資料在structure,將值存在length上。像length這種參數稱為value-result參數。

0 意見: