[질문]접속에러..SYN_SENT

익명 사용자의 이미지

#define PORT (u_short)8080
#define BUF_LEN 100
char hostname[]="www.abc.com";
main()
{

struct hostent *myhost;
struct sockaddr_in server_addr;
int myfd,size;
char buffer[255];
pid_t pid;

myhost = gethostbyname(hostname);

bzero((char *)&server_addr,sizeof(server_addr));

server_addr.sin_family=AF_INET;
server_addr.sin_port=PORT;

bcopy(myhost->h_addr,(char *)&server_addr.sin_addr,myhost->h_length);
printf("step1\n");
if((myfd=socket(AF_INET, SOCK_STREAM,0))<0)
{
printf("Client Can not open stream socket\n");
return -1;
}
printf("socket myfd %d",myfd);
printf("step2\n");

if(connect(myfd,(struct sockaddr *)&server_addr,sizeof(server_addr))<0)
{
printf("Clientcan not connect to server.\n");
return -1;
};

printf("Connect to server ... \n");
}

이렇게 해서 다른 곳에 도메인을 가지고 접속을 할려고 합니다.
그런데 netstat를 사용해서 상태를 보면 SYN_SENT 이렇게 나옵니다.

요청하는 곳에 접속이 안된것 같은데..

if(connect(myfd,(struct sockaddr *)&server_addr,sizeof(server_addr))<0)
{
printf("Clientcan not connect to server.\n");
return -1;
};
이곳에서 에러가 발생하는 것 같은데 어느 부분이 에러인지..^^;;

익명 사용자의 이미지

잘못된 부분은

server_addr.sin_family=AF_INET;
server_addr.sin_port=PORT;

입니다..

port값을 server_addr.sin_port에 대입을 하실때는
htons(PORT)로 지정을 하셔야 합니다.
포트 지정이 엉뚱해서 connect가 실패 하는 것이지요..