- 论坛徽章:
- 0
|
不知道为什么,recvfrom一直在等待,无法收到消息
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <arpa/inet.h>
#define MEDIA_LOCAL_PORT 514
void send_test(){
struct sockaddr_in sa;
int test = 1;
int ret = -1;
int mediaplayer_s = socket(AF_INET,SOCK_DGRAM,0);
sa.sin_family =AF_INET;
sa.sin_addr.s_addr = inet_addr("127.0.0.1");
sa.sin_port = htons(MEDIA_LOCAL_PORT);
ret = sendto(mediaplayer_s,&test,sizeof(test),MSG_WAITALL,(struct sockaddr*)&sa,sizeof(struct sockaddr));
}
void mediaplayer_process(void)
{
int ret = 1;
struct sockaddr_in sa;
struct sockaddr temp_sa;
int sa_len = sizeof(struct sockaddr);
char buf[1024];
int mediaplayer_s = socket(AF_INET,SOCK_DGRAM,0);
sa.sin_family =AF_INET;
sa.sin_addr.s_addr = inet_addr("127.0.0.1");
//sa.sin_addr.s_addr = INADDR_ANY;
sa.sin_port = htons(MEDIA_LOCAL_PORT);
ret = bind(mediaplayer_s,(struct sockaddr*)&sa,sizeof(struct sockaddr));
if(ret != 0){
perror("bind\n");
exit(1);
}
while(1){
memset(&buf,0,sizeof(buf));
recvfrom(mediaplayer_s,buf,sizeof(buf),0,(struct sockaddr*)&temp_sa,&sa_len);
printf("debug:%s\n",buf);
}
printf("exit process\n");
}
int main()
{
pthread_t media_thread;
int ret = 1;
ret = pthread_create(&media_thread,NULL,mediaplayer_process,NULL);
if(ret != 0){
perror("phread_create\n");
exit(1);
}
send_test();
return 0;
} |
|