UDP套介面程式設計

2021-09-22 13:26:22 字數 1684 閱讀 1691

常用的udp實現的程式:dns網域名稱系統,nfs網路檔案系統,snmp簡單網路管理協議

ssize_t recvfrom(int sockfd,void *buff,size_t nbytes,int flags,struct sockaddr * from,socklen_t *addrlen);

ssize_t sendto(

int sockfd,void *buff,size_t nbytes,int flags,struct sockaddr * to,socklen_t addrlen);

sockfd:描述字

buff:緩衝區指標

nbytes 讀寫位元組數

udp伺服器端

int main(int argc,char **ar**)

void dg_echo(int sockfd,sa *pcliaddr,socklen_t clilen)

}

sock_dgram:udp套介面

1 函式不能終止

2 伺服器是迭代伺服器,沒有fork呼叫,單一伺服器程序處理所有客戶。

udp客戶機程式:

int main(int argc,char **ar**)

void dg_cli(file *fp,int sockfd,const sa *pservaddr,socklen_t servlen)

}

改進的dg_cli

void dg_cli(file *fp,int sockfd,const sa *pservaddr,socklen_t servlen)

recvline[n] = 0

; fputs(recvline,stdout);

}}

解決辦法:

1 給定由recvfrom返回的ip,在dns中查詢伺服器驗證

2 伺服器配置每個ip位址建立套介面,**ip位址此套介面,

僅在程序已將udp套介面連線到確切的對方後,這些一步錯誤才返回給程序。

已連線的udp套介面上呼叫connect達到下面兩個目的:

1 指定ip位址和埠號

2 斷開套介面

使用connect連線後再呼叫read write

void dg_cli(file *fp,int sockfd,const sa *pservaddr,socklen_t servlen)

}

對傳送的udp進行統計:

static

void recvfrom_int(int

);static

intcount;

void dg_echo(int sockfd,sa *pcliaddr,socklen_t clilen)

}static

void recvfrom_int(int

signo)

udp與tcp的伺服器復用:

int main(int argc,char **ar**)

if(fd_isset(listenfd,&rset))

close(connfd);

}if(fd_isset(udpfd,&rset))

}}

UDP套介面程式設計

常用的udp實現的程式 dns網域名稱系統,nfs網路檔案系統,snmp簡單網路管理協議 ssize t recvfrom int sockfd,void buff,size t nbytes,int flags,struct sockaddr from,socklen t addrlen ssiz...

套介面程式設計

1 struct in addr 4struct sockaddr in 通用套介面位址結構 struct sockaddr int bind int struct sockaddr socklen t strcut sockaddr in serv bind sockfd,struct socka...

套介面程式設計

1 struct in addr 4struct sockaddr in struct sockaddr int bind int struct sockaddr socklen t strcut sockaddr in serv bind sockfd,struct sockaddr serv,s...