这会向服务器发送一条消息,响应应该返回“ok”。我知道这是有效的,因为我也在python中尝试过,它可以100%运行。但在java中,我无法得到回复。
String host = "(name of global host)";
s.connect(new InetSocketAddress(host, 80));
System.out.println("Connected");
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("(insert message to sent to server here)");
bw.flush();
BufferedReader brz = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while((t = brz.readLine()) != null){
System.out.println(t);
}
brz.close();
s.close();
// The loop doesn't even run because it returns null
这是python代码,与java one不同,它的工作方式非常好
HOST, PORT = "(host name)", 80
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(10)
self.wrappedSocket = ssl.wrap_socket(self.sock)
initial_connection_payload = '(text to send to server)'.encode('UTF-8')
self.wrappedSocket.connect((HOST, PORT))
self.wrappedSocket.send(initial_connection_payload)
response = self.wrappedSocket.recv(16384).decode('UTF-8')
if "ok" not in response:
self._log(response, "[!] Could not connect to server: " + response)
self._log("[+] Connected.")
所以我的问题是我在java中做错了什么?我甚至尝试过其他方法,例如printwriter dataoutputstream等,甚至尝试从扫描仪或仅仅是InputStream读取,但没有任何作用。任何帮助将不胜感激