用socket建立網路程式設計介面------檔案描述符。 “地方”定義了,下面就需要將socket放置在這個“地方”(TCP),將他們緊緊地捆綁在一起,用bind函式吧, 我們來看看函式原型:
int PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen);
第一個引數當然是待繫結的套接字啦,第二個引數是標識繫結在哪個“地方”, 第三個引數是這個“地方”的佔地大小。
返回值表示繫結操作是否成功,0表示成功, -1表示不成功。函式的返回值千萬不要忽視,上次就被人說了。
一般是這麼呼叫的:
iRet = bind(sockSrv,(SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); // 注意強制轉換
我們來對比一下檔案I/O操作和網路I/O操作: 開啟一個檔案後, 便可以對檔案進行讀寫操作了, 但是, 網路I/O實際上有三個步驟來完成這個功能:
1. 開啟/建立socket
2. 命名socket, 我們知道, socket名稱包含"協議, ip地址, 埠號"這三個要素, 而命名就是透過呼叫bind函式把socket與這三個要素繫結一起來。
用socket建立網路程式設計介面------檔案描述符。 “地方”定義了,下面就需要將socket放置在這個“地方”(TCP),將他們緊緊地捆綁在一起,用bind函式吧, 我們來看看函式原型:
int PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen);
第一個引數當然是待繫結的套接字啦,第二個引數是標識繫結在哪個“地方”, 第三個引數是這個“地方”的佔地大小。
返回值表示繫結操作是否成功,0表示成功, -1表示不成功。函式的返回值千萬不要忽視,上次就被人說了。
一般是這麼呼叫的:
iRet = bind(sockSrv,(SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); // 注意強制轉換
我們來對比一下檔案I/O操作和網路I/O操作: 開啟一個檔案後, 便可以對檔案進行讀寫操作了, 但是, 網路I/O實際上有三個步驟來完成這個功能:
1. 開啟/建立socket
2. 命名socket, 我們知道, socket名稱包含"協議, ip地址, 埠號"這三個要素, 而命名就是透過呼叫bind函式把socket與這三個要素繫結一起來。