发送端:
1: /*
2: * =====================================================================================
3: *
4: * Filename: client.c
5: *
6: * Description:
7: *
8: * Version: 1.0
9: * Created: 03/14/2013 01:48:12 PM
10: * Revision: none
11: * Compiler: gcc
12: *
13: * Author: YOUR NAME (),
14: * Company:
15: *
16: * =====================================================================================
17: */
18:
19: #include <stdio.h>
20: #include <sys/socket.h>
21: #include <netinet/in.h>
22: #include <arpa/inet.h>
23: #include <stdlib.h>
24: #include <strings.h>
25: #include <string.h>
26: #include <unistd.h>
27:
28: #define N 256
29:
30: typedef struct sockaddr SA;
31:
32: int main(int argc, char *argv[])
33: {
34:
35: int sockfd;
36: int on = 1;
37: socklen_t optlen = sizeof(on);
38: struct sockaddr_in broad_addr;
39: char buffer[N] = {"pengdonglin"};
40:
41:
42: if(argc < 3)
43: {
44: printf("usage: %s <ip> <port>\n",argv[0]);
45: exit(-1);
46: }
47: if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
48: {
49: perror("fail to socket");
50: exit(-1);
51: }
52:
53: if(setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, optlen) < 0)
54: {
55: perror("fail to getsockopt");
56: exit(-1);
57: }
58:
59: bzero(&broad_addr, sizeof(struct sockaddr_in));
60:
61: broad_addr.sin_family = PF_INET;
62: broad_addr.sin_port = htons(atoi(argv[2]));
63: broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
64:
65: while(1)
66: {
67: sendto(sockfd,buffer, N, 0, (SA *)&broad_addr, sizeof(broad_addr));
68: sleep(1);
69: }
70:
71: return 0;
72: }
接收:
1: /*
2: * =====================================================================================
3: *
4: * Filename: client.c
5: *
6: * Description:
7: *
8: * Version: 1.0
9: * Created: 03/14/2013 01:48:12 PM
10: * Revision: none
11: * Compiler: gcc
12: *
13: * Author: YOUR NAME (),
14: * Company:
15: *
16: * =====================================================================================
17: */
18:
19: #include <stdio.h>
20: #include <sys/socket.h>
21: #include <netinet/in.h>
22: #include <arpa/inet.h>
23: #include <stdlib.h>
24: #include <strings.h>
25: #include <string.h>
26: #include <unistd.h>
27:
28: #define N 256
29:
30: typedef struct sockaddr SA;
31:
32: int main(int argc, char *argv[])
33: {
34:
35: int sockfd;
36: struct sockaddr_in broad_addr, peeraddr;
37: socklen_t peerlen = sizeof(peeraddr);
38: char buffer[N];
39:
40: if(argc < 3)
41: {
42: printf("usage: %s <ip> <port>\n",argv[0]);
43: exit(-1);
44: }
45:
46: if((sockfd = socket(PF_INET, SOCK_DGRAM, 0) ) < 0)
47: {
48: perror("fail to socket");
49: exit(-1);
50: }
51:
52:
53: bzero(&broad_addr, sizeof(struct sockaddr_in));
54:
55: broad_addr.sin_family = PF_INET;
56: broad_addr.sin_port = htons(atoi(argv[2]));
57: broad_addr.sin_addr.s_addr = inet_addr(argv[1]);
58:
59: if(bind(sockfd, (SA *)&broad_addr, sizeof(broad_addr)) < 0)
60: {
61: perror("fail to bind");
62: exit(-1);
63: }
64: while(1)
65: {
66: recvfrom(sockfd, buffer, N, 0, (SA *)&peeraddr, &peerlen);
67:
68: printf("%s : %d : %s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port),buffer);
69: }
70:
71: return 0;
72: }
运行:
发送端:
接收端:
接收端或者绑定的ip设为0