我正在开发一个Android应用程序,我需要从应用程序向Java服务器发送消息。
Java Server的工作原理如下:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
for sub1 in self.view.subviews {
for sub2 in sub1.subviews {
for sub3 in sub2.subviews {
if let textView = sub3 as? UITextView {
textView.text = "test"
}
}
}
}
}
在我的应用程序中,我以这种方式发送消息:
thread = new Thread(){
public void run(){
System.out.println("Server is running...");
try {
ServerSocket socket = new ServerSocket(7000);
while(true){
Socket s = socket.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
System.out.println("Received from client: " + dis.readUTF());
dis.close();
s.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
thread.start();
我可以通过模拟器和手机成功发送消息,因为它们连接到同一个wifi连接,但如果设备未连接到同一网络,则不会将消息发送到服务器。我希望每个人都能够将消息发送到我的计算机服务器,无论他们的互联网连接如何。
如何解决此问题?
答案 0 :(得分:1)
一般情况下,您需要使用类似Web Sockets
的内容来实现您尝试做的事情,通常情况下,客户端/服务器位于不同的网络上。有一些不同的Web Socket实现,例如https://medium.com/square-corner-blog/web-sockets-now-shipping-in-okhttp-3-5-463a9eec82d1#.w9hrc1icw
修改强>
我最初误读了问题,并认为你试图异步地从服务器向客户端发送消息(这需要像Web套接字一样)。如果您只是从客户端向服务器发出请求,那么典型的解决方案是从您的服务器公开REST API(并使用类似Retrofit
的内容来向客户端发出请求)。