sendto成功返回
生活随笔
收集整理的這篇文章主要介紹了
sendto成功返回
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??強(qiáng)烈推薦人工智能學(xué)習(xí)網(wǎng)站??? ? ? ? ? ? ? ? ?
?sendto用于UDP發(fā)送數(shù)據(jù),send用于TCP發(fā)送數(shù)據(jù).我們知道TCP中的send成功返回表示應(yīng)用進(jìn)程已成功將數(shù)據(jù)寫入發(fā)送緩沖區(qū),不表示數(shù)據(jù)已成功到達(dá)對(duì)端。而對(duì)于sendto成功返回,也只是表明接口輸出隊(duì)列中具有存放所形成IP數(shù)據(jù)包的空間,UDP是沒(méi)有發(fā)送緩沖區(qū)的。來(lái)看一段代碼:
#include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <malloc.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <stdarg.h> #include <fcntl.h> #include <sys/types.h> #include <sys/wait.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #define MAXLINE 4096int main() {int i;int sockfd;struct sockaddr_in seraddr;sockfd=socket(AF_INET,SOCK_DGRAM,0);bzero(&seraddr,sizeof(seraddr));seraddr.sin_family=AF_INET;seraddr.sin_addr.s_addr=inet_addr("127.0.0.1");seraddr.sin_port=htons(8888);char buf[100]="11111111111";i=sendto(sockfd,buf,sizeof(buf)+1,0,(sockaddr *)&seraddr,sizeof(sockaddr));printf("i=%d\n",i);getchar();exit(0); }?
這是一段基于UDP的客戶端的代碼,編譯并運(yùn)行,此時(shí)并沒(méi)有運(yùn)行相應(yīng)的服務(wù)端。此時(shí)sendto也成功返回了,如下:
?
[mapan@localhost UDP]$ ./client i=101這里顯然sendto是發(fā)送錯(cuò)的,但沒(méi)有返回錯(cuò)誤。unix網(wǎng)絡(luò)編程中有一句話:未連接的UDP套接字不會(huì)收到任何異步錯(cuò)誤。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的sendto成功返回的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 套接字选项SO_LINGER
- 下一篇: UDP调用connect函数