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
댓글 달기