sendto成功返回
生活随笔
收集整理的這篇文章主要介紹了
sendto成功返回
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??強烈推薦人工智能學習網站??? ? ? ? ? ? ? ? ?
?sendto用于UDP發送數據,send用于TCP發送數據.我們知道TCP中的send成功返回表示應用進程已成功將數據寫入發送緩沖區,不表示數據已成功到達對端。而對于sendto成功返回,也只是表明接口輸出隊列中具有存放所形成IP數據包的空間,UDP是沒有發送緩沖區的。來看一段代碼:
#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的客戶端的代碼,編譯并運行,此時并沒有運行相應的服務端。此時sendto也成功返回了,如下:
?
[mapan@localhost UDP]$ ./client i=101這里顯然sendto是發送錯的,但沒有返回錯誤。unix網絡編程中有一句話:未連接的UDP套接字不會收到任何異步錯誤。
?
?
?
?
總結
以上是生活随笔為你收集整理的sendto成功返回的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 套接字选项SO_LINGER
- 下一篇: UDP调用connect函数