发送端代码
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>
void sen();
int main()
{
sen();
return 0;
}
void sen()
{
/*创建socket对象*/
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
/*创建发生目标端口及IP地址*/
struct sockaddr_in dst_addr , local_addr;
dst_addr.sin_family = AF_INET;
dst_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
dst_addr.sin_port = htons(5555);
/*创建本地端、本地IP绑定socket*/
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
local_addr.sin_port = htons(5555);
/*判定绑定本地端口及IP是否成功*/
if(bind(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0)
{
printf("bind local address error, \n");
}
/*connect 与bind 有相似之处*/
/* if(connect(sockfd, (struct sockaddr*)&dst_addr,sizeof(dst_addr)) < 0) {
LOG(ERROR) << "connect to server error";
return;
}*/
for(int i=0;i<5;i++)
{
printf("发送成功\n");
sendto(sockfd,"hello world", sizeof("hello world"),0,(struct sockaddr*)&dst_addr,sizeof(dst_addr));
}
close(sockfd);
}
使用gcc 编译
gcc xx.c -o xx.exe
./xx.exe
接收端代码
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
void re();
int main()
{
re();
return 0;
}
void re()
{
int nRet = 0;
char buf[100];
unsigned int len = sizeof(struct sockaddr_in);
/*创建socket用于绑定本地地址及本地端口*/
int serverSocket = socket(PF_INET, SOCK_DGRAM, 0);
struct sockaddr_in server , client;
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(5555);
//server.sin_addr.s_addr = htonl(INADDR_ANY);/*接受任意端口的IP*/
/*使用bind函数 绑定本地socket 端口 IP*/
bind(serverSocket,(struct sockaddr*)&server,sizeof(server));
while(1)
{
memset(buf,0,sizeof(buf));
recvfrom(serverSocket, buf , sizeof(buf), 0,(struct sockaddr*)&client,&len );
printf("接受的数据是:%s\n",buf);
}
close(serverSocket);
}
同上使用gcc编译即可