1、myhead.h
#ifndef _MYHEAD_H_
#define _MYHEAD_H_
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define MYPORT 6666
#define MYADDR "192.168.1.100"
#endif
2、udp_client.c
#include "myhead.h"
int main()
{
int sockfd = 0;
int ret = 0;
int recvcnt = 0;
int sendcnt = 0;
char recvbuff[20] = {0};
char sendbuff[20] = {0};
struct sockaddr_in server_addr;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd == -1)
{
perror("socket");
return -1;
}
printf("socket sucessfully...\n");
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(MYPORT);
server_addr.sin_addr.s_addr = inet_addr(MYADDR);
while(1)
{
memset(sendbuff,0,sizeof(sendbuff));
printf("plaese input data:\n");
scanf("%s",sendbuff);
// sendcnt = send(sockfd,sendbuff,strlen(sendbuff),0);
// sendcnt = write(sockfd,sendbuff,strlen(sendbuff));
sendcnt = sendto(sockfd,sendbuff,strlen(sendbuff),0,(struct sockaddr*)&server_addr,sizeof(server_addr));
if(sendcnt == -1)
{
perror("send");
}
else
{
printf("client send %d bytess :%s\n",sendcnt,sendbuff);
}
/*memset(recvbuff,0,sizeof(recvbuff));
recvcnt = read(sockfd,recvbuff,sizeof(recvbuff));
if(recvcnt == -1)
{
perror("recevive");
return -1;
}
else
{
printf("recieve %d bytes :%s\n",recvcnt,recvbuff);
}
*/
if(strcmp(sendbuff,"end") == 0)
{
break;
}
}
close(sockfd);
}
3、udp_server.c
#include "myhead.h"
int main()
{
int sockfd = 0;
int ret = 0;
int recvcnt = 0;
int sendcnt = 0;
char recvbuff[20] = {0};
char sendbuff[20] = {0};
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
socklen_t len = sizeof(server_addr);
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd == -1)
{
perror("socket");
return -1;
}
printf("socket sucessfully...\n");
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(MYPORT);
server_addr.sin_addr.s_addr = inet_addr(MYADDR);
ret = bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr));
if(ret == -1)
{
perror("bind");
return -1;
}
printf("bind sucessfully...\n");
while(1)
{
memset(recvbuff,0,sizeof(recvbuff));
// recvcnt = recv(clientfd,recvbuff,sizeof(recvbuff),0);
// recvcnt = read(clientfd,recvbuff,sizeof(recvbuff));
recvcnt = recvfrom(sockfd,recvbuff,sizeof(recvbuff),0,(struct sockaddr*)&client_addr,&len);
if(recvcnt == -1)
{
perror("receive");
return -1;
}
else
{
printf("receive %d bytes from client: %s\n",recvcnt,recvbuff);
}
if(strcmp(recvbuff,"end") == 0)
{
break;
}
}
close(sockfd);
return 0;
}