套介面程式設計簡介
ipv4套介面位址結構通常也稱為「網際套介面位址結構」
其結構是:
structsockaddr_in
sin_len 是不需要設定的,其中需要sin_family = af_inet網際協議族,sin_port 是網路位元組序的埠,sin_addr 是網路位元組的主機位址,sin_zero是不用設定的,主要是在使用這個位址的時候,全部要置為0,
structsockaddr
和上面的struct sockaddr_t所佔的位元組數相同,都是16位元組
such as:
intbind(int fd,sockaddr *addr,socklen_t);
當使用bind進行繫結的時候,就需要吧sockaddr_t轉化成sockaddr(因為內部大小是相同的)
3 從程序到核心傳遞套介面的函式有bind connect sendto這些函式的第三個函式是告訴核心需要在應用層拷貝多少位元組數
從核心到程序(應用層)的位址的拷貝有 accept recvfrom getsocketnamegetpeername,
sockaddr_incli;
socklen_tlen;
len =sizeof(cli);
getpeername(fd,(sockaddr*)&cli, &len)
其中len當傳遞到核心是告訴核心,我現在需要拷貝到cli中的位元組數,使用指標是為了核心告訴應用層說我核心實際的位元組數
3 對於某個作業系統是採用大段還是小端儲存的乙個好辦法就是使用union
#include using namespace std;
int main()
un;un.c = 0x0102;
if(sizeof(short) == 2)
{if(un.s[0] == 1 && un.s[1] == 2)
{cout<
一些主機位元組序到網路位元組序的轉化函式如下:
uint16_thtons(uint16_t );
uint32_thtonl(uint32_t );
uint16_tntohs(uint16_t );
uint32_tntohl(uint32_t );
三個伯克利記憶體操作的函式是:
voidbzero(void* dst, size_t size);是將dst指定的size個位元組初始化為0
voidbcopy(const void* src, void *dst, size_t size); 是將src拷貝到dst,拷貝的個數是size
intbcmp(const void*ptr1, const void*ptr2, size_t size); 比較ptr1,ptr2 的個數是size
三個ansic的記憶體操作的函式是:
memsetmemcopy memcmp
intinet_aton(const char * str, struct in_addr* addptr)
char*inet_ntoa(struct in_addr* addr);
是支援ipv4 ipv6的
測試是不是套接字函式int isfdtype(int fd,int fdtype)返回值是1是該型別0不是
fdtype 可設定成s_ifsock
網路程式設計第三章 套接字程式設計簡介
include unp.h struct in addr struct sockaddr in tcp或者埠總是以網路位元組序來儲存 套接字位址結構僅僅在給定主機上使用,雖然某些字段用於通訊,但是結構本身並不用於通訊 通用套接字位址結構 作為引數傳遞任何套接字函式的時候,套接字總是以引用的方式傳遞,...
程式設計珠璣第三章
第三章寫的有點太簡單了,可能作者是想在後面章節裡再詳細說吧!這一章就是作者說的幾句話印象還是很深刻。程式設計師在節省空間方面無計可施時,將自己從 中解脫出來,退回起點並記者並集 中精力研究資料,常常能有奇效。資料的 表示形式是程式設計的根本。正如人月神話的作者說 只要給我你設計的表,我就對你的程式一...
第三章 函式程式設計
函式是一段具有特定功能的 可重用的語句組,用函式名來表示並通過函式名進行功能呼叫。函式也可以看作是一段具有名字的子程式 特性 1.減少重複 2.使程式變的可擴充套件 3.使程式變得易維護 語法定義 def sayhi 函式名 print hello,i m nobody sayhi 呼叫函式 可以帶...