您的位置:首页 > 其它

socket的UDP通信简单例子

2017-01-05 19:12 363 查看
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define MAX_MSG 512

int main()
{
int sockfd,nBytes;
struct sockaddr_in addr;
char recvbuff[MAX_MSG],sendbuff[MAX_MSG];

sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
printf("socket erro\n");
return -1;
}
addr.sin_family=AF_INET;
addr.sin_port=htons(6666);
addr.sin_addr.s_addr=htonl(INADDR_ANY);

while(fgets(sendbuff,MAX_MSG,stdin)!=NULL)
{
nBytes=sendto(sockfd,sendbuff,MAX_MSG,0,(const struct sockaddr*)&addr,sizeof(addr));
if(nBytes<0)
{
printf("sendbuff erro\n");
return -1;
}
nBytes=recvfrom(sockfd,recvbuff,MAX_MSG,0,NULL,NULL);
if(nBytes<0)
{
printf("recvbuff erro\n");
return -1;
}
fputs(recvbuff,stdout);
}
close(sockfd);
return 0;
}


#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define MAX_MSG 512

int main()
{
int sockfd,nBytes;
struct sockaddr_in addr;
char recvbuff[MAX_MSG];
socklen_t len;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
printf("socket erro\n");
return -1;
}
addr.sin_family=AF_INET;
addr.sin_port=htons(6666);//将短整型转换为网络字节序
//INADDR_ANY为默认地址,0.0.0.0,即监听所有
addr.sin_addr.s_addr=htonl(INADDR_ANY);//将长整型转化为网络字节序
if(bind(sockfd,(struct sockaddr*)&addr,sizeof(addr))<0)//绑定
{
printf("bind erro\n");
return -1;
}
len=sizeof(addr);
while(1)
{
nBytes=recvfrom(sockfd,recvbuff,MAX_MSG,0,(struct sockaddr*)&addr,&len);
if(nBytes<0)
{
printf("recvbuff erro\n");
return -1;
}
fputs(recvbuff,stdout);
nBytes=sendto(sockfd,recvbuff,MAX_MSG,0,(const struct sockaddr*)&addr,sizeof(addr));
if(nBytes<0)
{
printf("recvbuff erro\n");
return -1;
}
}
close(sockfd);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: