考試大
套接字結構
struct sockaddr_in
//埠號以及 internet 位址使用的是
網路位元組順序,需要通過函式 htons 轉換
主機結構
struct hostent
函式庫
1. int socket(int domain,int type,int protocol);
函式 socket 建立乙個套接字描述符,如果失敗返回 -1.domain為位址型別af_***,type為套接字型別,sock_stream(tcp),sock_dgram (udp),sock_raw(ip、icmp);protocol 指定協議 0為預設模式 。
2. int bind(int sockfd,struct sockaddr *hostaddr,int addrlen);
函式bind將本地位址與套接字繫結在一起,成功返回0,失敗為-1,並設定全域性變數errno為錯誤型別
eaddrinuser。
3. int connect( int sockfd,struct sockaddr *servaddr, int addrlen);
函式connect與伺服器建立乙個連線,成功返回 0,失敗返回- 1。servaddr 為遠端伺服器的套接字位址,包括伺服器的 ip 位址和埠號;addrlen 為位址的長度。
4. int accept(int sockfd,struct sockaddr *addr,int *addrlen)
函式accept從listen的完成連線佇列中接收乙個連線,如果連線隊列為空,則該程序睡眠。
5. int listen(int sockfd,int backlog);
函式listen 將乙個套接字轉換為傾聽套接字,執行成功返回0,失敗為-1。backlog設定請求佇列的最大長度。
6. int write( int fd,char *buf,int len);
7. int read ( int fd,char *buf,int len);
函式read和write從套接字讀和寫資料,成功返回資料量大小,否則返回 -1.buf 指定資料緩衝區,len 指定接收或傳送的資料量大小。
8. int close(int sockfd);
函式close關閉乙個套接字描述符,成功返回0,失敗為-1。
9. struct hostent * gethostbyname( const char *hostname);
函式 gethostbyname 查詢指定的網域名稱位址對應的 ip 位址,返回乙個 hostent結構的指標,如果不成功返回 null。
附帶函式
htons()
ntohs()
htonl()
ntohl()
在寫整型資料前,先轉換一下:
i= htonl(i);
write_data(s, &i, sizeof(i));
在讀整型資料後,再轉變回來:
read_data(s, &i, sizeof(i));
i= ntohl(i);
示例
#include /* obligatory includes */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 3490
int main( int argc,char *argv )
if ( (2) (he=gethostbyname(argv[1]))==null) //如果通過主機名沒有獲得對應的主機 資訊就提示使用者
if ( (3)(sockfd=socket(af_inet,sock_stream.0))==-1 ) //在無法建立套接字時,
提示使用者
bzero( &srvaddr,sizeof(srvaddr));//置空 srvaddr
srvaddr.sin_family = af_inet;
srvaddr.sin_port=(4)htons(port) ;
srvaddr.sin_addr=(5)*((struct in_addr *)he->h_addr) ;
//設定套接字結構的各項資訊,其中的位址來自於網域名稱查詢後的 hp 變數
if(connect( sockfd, (6)(struct sockaddr *)&srvaddr,sizeof( struct sockaddr))==-1 )
//連線伺服器,如果失敗則提示使用者
if (( nbytes = read ( sockfd,buf,maxdatasize)) == -1 )
//從套容接字中讀出資料
buf[nbytes] = 』/0』;
printf("讀到的內容:%s",buf) ;
close( sockfd) ;
//列印資料並關閉套接字
軟體設計師考試總結
我們剛開始為了這次考試,自發結成乙個小組。自己卻因為時間安排上的問題與自己的組員嚴重脫節。經過一段時間的自己看書學習,覺得效果很差,就去找師哥師姐幫忙了。慶幸的是在師哥師姐的帶領下自己也算是跟上了隊伍的節奏!個人覺得在其中需要注意的幾點 備考階段 小組學習 在這個階段一定要跟小組一起學習討論,有疑問...
軟體設計師考試 概況
最近正在準備軟考,剛開始接觸軟考的時候,裡面的東西很多,雖然大部分是學過,感覺還是比較雜,於是就總結了下導圖 先上圖 整本書主要描述的就是軟體從無到有的過程,下面一一闡述 指導原則 也可以叫做指導思想,做什麼事情都有自己的指導原則。軟體工程的出現是為了解決軟體危機,使做軟體變成乙個工程去對待。因為在...
軟體設計師複習(一)
1 常用的虛擬儲存器由 主存 輔存 兩級儲存器組成。2 中斷向量可提供 中斷服務程式的入口位址 3 為了便於實現多級中斷巢狀,使用 堆疊 來保護斷點和現場最有效。4 dma工作方式下,在 主存與外設 之間建立了直接的資料通路。5 利用報文摘要演算法生成報文主要的目的是 防止傳送的報文被篡改 6 防火...