소켓프로그래밍에서 connect()에러 확인 방법이 있나요..?
글쓴이: toold / 작성시간: 토, 2003/11/08 - 7:43오후
소스는 아래와 같습니다..
실행하면 connect() error가 출력됩니다..
무엇이 잘 못되어서 connect가 안되는지 확인하고 싶은데..
어케 확인 할 수 있을까요..?..
부탁드립니다..
int main() { int connectSD; //소켓 디스크립터 struct sockaddr_in origin_addr; char *addr = "http://www.daum.kr"; if((connectSD = socket(PF_INET, SOCK_STREAM, 0)) < 0) error_handling("connectSD socket() error"); memset(&origin_addr, 0, sizeof(origin_addr)); origin_addr.sin_family = AF_INET; origin_addr.sin_addr.s_addr = inet_addr(addr); origin_addr.sin_port = htons(80); if(connect(connectSD, (struct sockaddr*)&origin_addr, sizeof(origin_addr)) == -1) error_handling("connect() error"); return 0; }
Forums:
system call의 error 메시지는 ...
perror나 strerrno(errno)를 사용해 보세요~
Be at a right place at a right time...
에러 메세지를 확인했는데요..
답변 감사합니다.
perror로 에러를 확인했는데요..
Network is unreachable 이라고 나옵니다..
이런건 어떤 경우에 나는 에러인가요..?..
네트워크에 도달할 수 없다..?..
다시 한번 부탁드릴께요..^^...
$ man connect[quote](생략)RETURN VAL
$ man connect
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
음...
이 부분인것 같은데...
그 다음에 뭘 어찌해야하는건지...^^...
ㅡ0-) 해당 네트워크에 도착할 수 없다는 말이지요.connect
ㅡ0-) 해당 네트워크에 도착할 수 없다는 말이지요.
connect를 위해 세팅해준 주소 구조체가 잘못되었거나,
아이피가 밖으로 나갈 수 없을 경우 등등...
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
s/kr/net/
char *addr = "http://www.daum.kr";
요게 잘못된 것 같은데요... ^^
daum.kr 이 아니라 daum.net이구요...
http:// 도 없어야 될 것 같습니다.
간단한 예제...
감사드립니다..그런데..
답변 감사드립니다..
주소는 잘못 쳤구요..^^..
소스는 아래와 같은데요..
컴파일하면..
warning: passing arg 2 of `connect' from incompatible pointer type
라는 경고메세지가 뜹니다..
아무래도 저 경고 때문에 connect() error가 나는 것 같은데요..
아무리 봐도 잘못된 부분이 없는것 같은데...^^..
보시고 지적 좀 해주시면..감사....
말 그대로 입니다.[quote]warning: passing ar
말 그대로 입니다.
connect 함수의 두번째 인자의 포인터 타입이 안 맞다는 거죠...
connect() error는 런타임시 에러구요.
if(connect(connectSD, (struct scokaddr*)&origin_addr, sizeof(origin_addr)) < 0)
에서... 타입 캐스팅이 잘못됐네요.
(struct scokaddr*) 가
(struct sockaddr *) 로 되야겠죠.
오타를 주의하셔야 될 듯... 8)
아, 그리고 inet_addr() 보다는
inet_aton()이나 inet_pton()을 사용하는 게 더 좋을 것 같습니다.
죄송한데요..
우선 다른것도 알려주시고...감사합니다..꾸벅꾸벅...
근데..죄송한데요..맹고이님께서 알려주신대로 아래와 같이 바꿔도..
계속 같은 경고문이 뜹니다...ㅠ.ㅠ...
혹시 구조체 셋팅중에 이상한 부분이 있나요..?
[quote]if(connect(connectSD, [b](struct
안바꼈네요... ;;
헉...
^^.......
죄송...* 부분을 말씀하시는 줄 알았습니다..
감사합니다...
에고...
정말 질문이 꼬리에 꼬리를 무네요..
이번엔 경고는 안되는데..
실행은 역시 마찬가지로..
Network is unreachable 이라고 나옵니다..
혹시 구조체 셋팅 부분중에 이상한 부분이 있는지 봐주시면 감사...꾸벅...
Re: 에고...
connect 함수는 연결이나 바인딩이 성공하면,
0을 리턴하고 에러시 -1을 리턴합니다.
그러니까...
가 되야겠죠.
manpage도 잘 읽어보시길...
감사합니다..
해결 했습니다..
맹고이님께서 알려주신 방법과..
address를 IP로 변환 후 하니까 되네요..^^...
지루한 질문에 관심 가져주셔서 감사합니다..
댓글 달기