客户端
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <sys/types.h> /* See NOTES */
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>int main(int argc, const char *argv[])
{int sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd < 0){perror("socket error");return -1;}//定义的接收方(服务端)的地址变量struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000); //接收方的端口号seraddr.sin_addr.s_addr = inet_addr("192.168.0.176"); //接收方所在主机的IP地址char src[1024] = {0};while(1){scanf("%s",src);ssize_t cnt = sendto(sockfd, src, strlen(src), 0, (struct sockaddr *)&seraddr, sizeof(seraddr));if (cnt < 0){perror("sendto error");return -1;}printf("cnt = %ld\n", cnt);}close(sockfd);return 0;
}
服务端
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/ip.h> /* superset of previous */
#include <sys/types.h> /* See NOTES */
#include <arpa/inet.h>
#include <unistd.h>int main(int argc, const char *argv[])
{int sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd < 0){perror("socket error");return -1;}struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000); seraddr.sin_addr.s_addr = inet_addr("192.168.0.176"); int ret = bind(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr));if(ret < 0){perror("bind error");return -1;}while(1){char buff[1024] = {0};ssize_t cnt = recvfrom(sockfd, buff, sizeof(buff), 0, NULL, NULL);if (cnt < 0){perror("recvfrom error");return -1;}printf("cnt = %ld, buff = %s\n",cnt, buff);}close(sockfd);return 0;
}