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參數。
2007年11月3日 星期六
Value-Result
張貼者:
Howard
於
凌晨1:04
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言