我目前正在为这个学期使用 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 手机编写代码时该代码是否相同,但我只想先看看发生了什么。我真的很绝望,请帮助我。非常感谢。