如何连接到具有不同IP地址的服务器
我真的不知道该怎么办...
首先让我解释一下。
如果我和我的计算机在同一网络上,则我有一个客户端和服务器,在两者之间发送消息时,它们的工作原理很好。
我有一个android设备,我希望当我被放置在很远的地方,当我单击某个按钮时,即使我不在同一网络上,它也会向服务器发送消息。
客户
try {
client = new Socket("IpAddress", 4444);
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));
printlng = new PrintWriter(client.getOutputStream());
printlng.println(mlng);
printlng.flush();
while (true) {
if ((Response= in.readLine()) != null) {
Log.i("Response:", Response);
dlng = Double.valueOf(Response);
System.out.println(dlng);
break;
}
}
服务器:
public static void main(String[] args) {
try {
serverSocket = new ServerSocket(4444); // Server socket
} catch (IOException e) {
System.out.println("Could not listen on port: 4444");
}
System.out.println("Server started. Listening to the port 4444");
while (true) {
try {
clientSocket = serverSocket.accept(); // accept the client
inputStreamReader = new InputStreamReader(
clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader); // get
// the
// client
PrintWriter out = new PrintWriter(
clientSocket.getOutputStream(), true);
InputStream inputStream = new ByteArrayInputStream(
bufferedReader.readLine().getBytes(
Charset.forName("UTF-8")));
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(inputStream));
String output = bufferedReader2.readLine();
System.out.println(output.toString());
out.println(output.toString());
out.flush();
out.close();
inputStreamReader.close();
clientSocket.close();
} catch (IOException ex) {
System.out.println("Problem in message reading");
}
}
}
您必须找出运行服务器的PC的外部/互联网ip地址。您可以通过http://whatismyip.com在那台PC上执行此操作。在您的客户端中使用获得的IP。但是,在它真正起作用之前,您必须配置与PC相连的路由器,以将使用的端口转发到PC的LAN IP地址。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句