Quantcast
Channel: 楽天 みんなで解決!Q&A 新着質問([技術者向] コンピューター/205)
Viewing all articles
Browse latest Browse all 29232

IPv6 TCP接続プログラムでエラー

$
0
0
現在TCP通信の勉強しています。 今後IPv6の知識が必要になりそうなので、IPv6通信も含めやっているのですが TCPの接続時にエラーが発生し、色々試したのですが問題が解決しません。 【プログラム概要】 プログラムはIPアドレスとポートを指定して通信を行う簡単なものです。 基本的な流れはsocket->connectです。 ping6などで試して正常に返ってくるリンクローカルのアドレスに対して 通信を試みています。 【環境】 CentOS6.2とScentificLinux6.1を使っています。 どちらもIPv6はリンクローカルのみ有効にしています。 【エラー】 connectの部分でエラーが発生します。 エラーコードは101(ENETUNREACH)でした。 ※IPv4の方はうまくいっています 恥ずかしながら、環境要因なのか、プログラム要因なのかも判断できません。 お詳しい方おりましたら問題点をご教示いただけませんでしょうか? よろしくお願いいたします ==================source================= // argv[1]:IP // argv[2]:ポート番号 int main(int argc, char* argv[]) { struct sockaddr_in6 stSockAddrIn6; int iSock = 0; char pcBuff[256]; int iRet = 0; int iErr = 0; printf("IP : %s\n", argv[1]); printf("Port : %s\n", argv[2]); iSock = socket(AF_INET6, SOCK_STREAM, 0); stSockAddrIn6.sin6_family = AF_INET6; stSockAddrIn6.sin6_port = htons(atoi(argv[2])); inet_pton(AF_INET6, argv[1], &stSockAddrIn6.sin6_addr); printf("IP : %s\n", inet_ntop(AF_INET6, &(stSockAddrIn6).sin6_addr, pcBuff, sizeof(pcBuff))); iRet = connect(iSock, (struct sockaddr*)&stSockAddrIn6, sizeof(stSockAddrIn6)); if(iRet < 0) { iErr = errno; printf("connect is failed : %d\n", iErr); close(iSock); return -1; } return 1; }

Viewing all articles
Browse latest Browse all 29232

Trending Articles