sendto error에 대해서 질문드려요..
글쓴이: emeraldrhapsody / 작성시간: 목, 2013/02/28 - 2:09오후
지금 리눅스와 윈도우간 udp통신을 하려고 합니다.
sendto를 호출하게 되면 자동으로 bind하는걸로 알고 있었는데..
일단은 bind까지 했는데도 sendto에서 리턴값이 -1이 나옵니다.
int sock = socket( PF_INET, SOCK_DGRAM, 0 );
if ( sock == -1 )
{
fprintf( stderr, "socket create FAIL!\n" );
exit(-1);
}
struct sockaddr_in server_addr;
memset( &server_addr, 0, sizeof( server_addr ) );
server_addr.sin_family = PF_INET;
server_addr.sin_port = htons( 49001 );
server_addr.sin_addr.s_addr = htonl( atoi(argv[1]) );
if ( -1 == bind( sock, (struct sockaddr*)&server_addr, sizeof( server_addr ) ) )
{
fprintf( stderr, "Bind Error\n" );
exit(-1);
}
char buffer[64+1];
abc(); //buffer채움
int ret = 0;
ret = sendto( sock, argv[2], strlen( argv[2] )+1, 0, (struct sockaddr*)&server_addr, sizeof(server_addr) );
if ( ret == -1 )
{
fprintf( stderr, "sendto() failed.\n" );
}Forums:


gilgil.net
1. PF_INET을 AF_INT으로 바꿔 보세요.
2.bind를 할 때에 s_addr 값에는 INADDR_ANY 혹은 자기 자신의 네트워크 어댑터 IP가 들어가야 하고, sendto를 할 때 server_addr정보에 상대방 주소가 들어가 있어야 합니다.
bind 이전
sendto 이전
www.gilgil.net
댓글 달기