私は現在、Android を使用して、今学期の小さな個人プロジェクトに取り組んでいます。私がやろうとしているのは、Android フォンで https サーバーに多くの接続を確立して、サーバーがダウンするようにすることです。私はコンピューター言語ではなくネットワークを勉強しているので、プログラミングについてはまったく知りません。でも、なんとなくあちこちから集めて、以下のようなコードを作りました。ソケット接続を使用していると思います。
import java.net.*;
import java.io.*;
import java.security.*;
import javax.net.ssl.*;
public class HTTPSClient {
public static void main(String[] args) {
System.out.println("Usage: java HTTPSClient host");
int port = 443; // default https port
String host = "192.168.0.8";
TrustManager[] trustAll = new javax.net.ssl.TrustManager[]{
new javax.net.ssl.X509TrustManager(){
public java.security.cert.X509Certificate[] getAcceptedIssuers(){
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs,String authType){}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs,String authType){}
}
};
try {
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
sc.init(null, trustAll, new java.security.SecureRandom());
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
SSLSocketFactory factory = (SSLSocketFactory) sc.getSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
Writer out = new OutputStreamWriter(socket.getOutputStream());
out.write("GET / HTTP/1.0\\r\\n");
out.write("\\r\\n");
out.flush();
// read response
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
int c;
while ((c = in.read()) != -1) {
System.out.write(c);
}
// out.close();
// in.close();
// socket.close();
} catch (Exception e) {
System.err.println(e);
}
}
}
Macbook で https を有効にすると、ポート 443 がリッスンしていることがわかります。上記のコードを実行すると、'netstat -an | grep 443' 停止するまで。私の質問は次のとおりです。このコードで複数の接続を作成したい場合、何を追加すればよいですか? このコードで可能ですか?私の考えでは、Macbook の 443 ポートへの確立された接続のヒープが表示された場合、マシンがダウンしているため、ブラウザで https:://localhost に接続できません。それが正しいかどうかはわかりませんが、願っています。学期がもうすぐ終わり、とにかく何か報告をしなければならないからです。
Androidフォン用のコードを作成するときにそのコードが同じになるかどうかはわかりませんが、最初に何かが起こるのを見たいだけです. 本当に困っています、助けてください。どうもありがとうございました。