private String[] connectCommentServer(String address,int port,String thread) {
try {
Socket connectSocket = new Socket(address,port);
//InetSocketAddress socketAddress = new InetSocketAddress(address, port);
//connectSocket.connect(socketAddress, timeoutSocket);
System.out.println("接続しました" + connectSocket.getRemoteSocketAddress());
// 出力ストリームを取得
PrintWriter out = new PrintWriter(connectSocket.getOutputStream(), true);
// 入力ストリームを取得
BufferedReader in = new BufferedReader(new InputStreamReader(connectSocket.getInputStream()));
out.println("<thread thread=\"" + thread + "\" version=\"20061206\" res_from=\"-1\" />");
String line;
String xmlData = "";
while(null != (line = in.readLine())) {
System.out.println(in.readLine());
xmlData += line;
}
// 入出力ストリームを閉じる
out.close();
in.close();
// ソケットを閉じる
connectSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
バイトデータだけ受け取れた編 でとりあえずソース公開しました。 ニコニコapiで、Javaからコメント鯖にソケット接続できない。
誰か続きやってください。
7月 31st, 2010
初めてコメントします。
時間が経ってるからもう自己解決されてるかもだけど一応ねw
コメントサーバに送信するデータの末尾には “” をつける必要があります。
“” は1件分のXMLデータの終了を表しています。
同様に、データを受信する際もこのことに気をつけなければなりません。
readLineメソッドは、受信データに改行、つまり “\n” が現れるまで待ちの状態になります。
しかし、コメントサーバから受信する実際のデータに “\n” は含まれていません。
1件1件のデータは “” で区切られているからです。
よって、readメソッドで受信する必要があります。
がんばって!(≧ω≦)b
7月 31st, 2010
連続コメすいません。
前のコメントでnull文字が見えなくなっちゃってるので訂正を。
“” → “¥0”(本当は半角文字)
8月 3rd, 2010
ありがとうございます、バイトデータを受け取ることができました!
別の方法で実現はさせることはできたんですが、この方がシンプルで軽いです。
今現在、他の機能を実装しているところなのでこのソース関係の実験はできない状態です。
今やっていることが終わり次第、このソースの実験に移りたいと思いますので、ひょっとしたらいくつかメールにてお聞きするかもしれません。その時は宜しくお願いします。
先ずはお礼まで。
8月 28th, 2010
[...] だいぶ前に投稿した、 ニコニコapiで、Javaからコメント鯖にソケット接続できない。に、検索で辿り着いている方がそこそこいらっしゃるので、とりあえずバイトデータだけ受信で来た [...]