- 论坛徽章:
- 0
|
在写最简单的UDP C/S的Sample代码。
这是一段UDP Serve接受信息的代码:
15 void udps_respon(int sockfd) {
16 struct sockaddr_in *addr;
17 int *p;
18 struct sockaddr_in *sss;
19 int addrlen, n;
20 char msg[MAX_MSG_SIZE];
21 char reply_msg[MAX_MSG_SIZE];
22
23 addr = malloc(sizeof(struct sockaddr_in));
24 p = malloc(sizeof(int));
25 sss = malloc(sizeof(struct sockaddr_in));
26
27 while(1) {
28 printf("begin listening\n");
29 n=recvfrom(sockfd, msg, MAX_MSG_SIZE, 0, (struct sockaddr *)addr, &addrlen);
30 fprintf(stdout, "Get Message From %s:%d\n", inet_ntoa(addr->sin_addr), ntohs(addr->sin_port));
31 sendto(sockfd, msg, n, 0, (struct sockaddr *)addr, addrlen);
32 printf("end\n");
33 }
34 }
问题:
1,如果没有24行,在addr,sss之间进行内存的分配,程序报错;
2, 将16行定义为struct sockaddr_in addr,sss; 程序就运行不对了,注意下面的指针根据变动进行了相应的修改;
不知道为什么会出现这样的问题!还请大家帮忙解决! 附件是源程序。 |
|