client端:
#define UDP_PORT 5001
#define UDP_BUF 1500
int sock = -1;
struct sockaddr_in server;
static void udp_client_main()
{
uint32_t *buffer = NULL;
int size = 0;
int sender_len;
buffer = malloc(UDP_BUF);
if (NULL == buffer)
goto udp_exit;
memset(buffer,0x0,UDP_BUF);
sock = socket(PF_INET, SOCK_DGRAM, 0);
if (sock < 0)
os_printf("err = %d.\n", errno);
server.sin_family = PF_INET;
server.sin_port = htons(UDP_PORT);
server.sin_addr.s_addr = inet_addr("192.168.0.1");
while(1){
size = recvfrom(sock, buffer, UDP_BUF, 0, (struct sockaddr *)&server, (socklen_t *)&sender_len);
if (size > 0){
os_printf("rcv server data, begin to write data.\n");
}
else{
close(sock);
sock = -1;
goto udp_exit;
}
}
udp_exit:
if (buffer){
free(buffer);
buffer = NULL;
}
if (sock >=0){
closesocket(sock);
sock = -1;
}
}
static void udp_server_main()
{
int buffer;
int send_len, size;
buffer = malloc(UDP_BUF);
if (NULL==buffer)
return;
sock = socket(PF_INET, SOCK_DGRAM, 0);
if (sock < 0){
goto server_exit;
}
server.sin_family = PF_INET;
server.sin_port = htons(UDP_PORT);
server.sin_addr.s_addr = inet_addr("0.0.0.0");
sender.sin_family = PF_INET;
sender.sin_port = htons(UDP_PORT);
sender.sin_addr.s_addr = inet_addr("192.168.0.1");
if(bind(sock, (struct sockaddr *)&server, sizeof(struct sockaddr_in)) < 0){
goto server_exit;
}
while(1){
size = recvfrom(sock, buffer, UDP_BUF, 0, (struct sockaddr *)&sender, (socklen_t *)&sender_len);
if (size > 0){
os_printf("rcv server data, begin to write data.\n");
}
else{
close(sock);
sock = -1;
goto server_exit;
}
}
server_exit:
if (buffer){
free(buffer);
buffer = NULL;
}
if (sock >=0){
closesocket(sock);
sock = -1;
}
}