軟體設計師考試複習指導 socket簡要

2021-04-20 05:42:31 字數 2655 閱讀 4081

考試大

套接字結構 

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 防火...