UDP调用connect函数
生活随笔
收集整理的這篇文章主要介紹了
UDP调用connect函数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? ? ? ? UDP是無(wú)連接的,在發(fā)送數(shù)據(jù)時(shí)需要指定對(duì)端的IP地址和端口,每次發(fā)送數(shù)據(jù)需要重新連接(多次發(fā)數(shù)據(jù)導(dǎo)致效率低下),而且異步錯(cuò)誤不會(huì)返回到UDP套接字。這些在UDP調(diào)用connect函數(shù)之后都發(fā)生了改變。代碼如下:
服務(wù)端:
?
#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 argc ,char *argv[]) {int sockfd,loop=1,ret;struct sockaddr_in seraddr;bzero(&seraddr,sizeof(seraddr));seraddr.sin_family=AF_INET;seraddr.sin_port=htons(8888);seraddr.sin_addr.s_addr=INADDR_ANY;sockfd=socket(AF_INET,SOCK_DGRAM,0);bind(sockfd,(sockaddr *)&seraddr,sizeof(seraddr));socklen_t len=sizeof(sockaddr);char buf[100]={0};recv(sockfd,buf,strlen(buf)-1,0);printf("buf=%s\n",buf);close(sockfd); }客戶端:
?
?
#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 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);connect(sockfd,(struct sockaddr *)&seraddr,sizeof(seraddr));char buf[100]="123";send(sockfd,buf,sizeof(buf)+1,0);getchar();exit(0); }?
編譯并運(yùn)行,你會(huì)發(fā)現(xiàn)服務(wù)端有了打印。但是我們使用的是send和recv函數(shù)。
?
[mapan@localhost UDP]$ ./server buf=123至于UDP調(diào)用connect函數(shù)之后異步錯(cuò)誤的返回,我這里不演示了。
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的UDP调用connect函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sendto成功返回
- 下一篇: getservbyname和getser