目前,我支持具有以下体系结构的客户端,用于工业制造过程:
客户端现在想要的是一个运行在PC上的web服务器和一个内置在应用程序中的web浏览器,以控制一些不是由他的Windows程序控制的附加进程。
我已经在PC上设置了一个WAMP服务器和一个示例网页,我可以在PC上的任何浏览器上看到它为"localhost“。我知道如何通过WebView类向安卓应用程序添加web浏览器视图。
但是我不知道如何让手机上的浏览器通过TCP连接在PC上看到WAMP服务器。我该怎么把这两件事联系起来?
发布于 2015-06-02 20:12:43
一些你应该知道的基本信息
当PC连接到您的手机时,必须使用底层的网络接口,例如,WiFi或以太网。还要注意,localhost在回送接口上是被欺骗的。应该注意的是,loopback接口只能在设备本身中访问(也就是说,其他设备不能与另一个设备的loopback通信)。
在另一边,一旦连接了接口,就会为它分配一个IP地址。我假设您的电话是通过WiFi接口连接到该PC上的,因此在本例中使用了两个接口。
wlan接口wlan接口。

而且都有自己独特的IP地址。如果你想从你的手机连接到那台电脑,你应该知道该PC的无线局域网接口的IP地址。
如果您的PC是基于Linux的,您可以编写ifconfig并在inet addr字段中看到IP地址(在wlan0部分下)。对于Windows机器,请阅读此页。
安卓中的 WebView
此视图提供了一个名为loadUrl的方法,用于从远程计算机中获取HTML。应该传递给此方法的字符串格式如下:
http://IP_ADDRESS:PORT_NUMBER哪里
IP_ADDRESS:远程计算机的IP地址。(在您的例子中,您在前面的步骤中找到了一个)PORT_NUMBER:每台机器都可以通过不同的端口监听不同的目的(例如HTTP、FTP、SSH、.)。HTTP的默认端口是80。因此,如果我们假设该PC的IP地址是192.168.0.1,那么您应该拥有:
webView.loadUrl("http://192.168.0.1:80");或
webView.loadUrl("http://192.168.0.1");
// Because 80 is the default port number for HTTP发布于 2015-06-02 18:05:25
那么,如何将Well浏览器连接到服务器呢?在桌面浏览器上,您可以在浏览器的地址栏中键入主机名或ip地址。
类似的流程适用于嵌入式the浏览器,您只需调用WebView实例的方法WebView即可。
更重要的问题是,您的web服务器有什么网络名称,以及http://的前面。如果服务器获得静态IP地址,您也可以使用该地址。但是,您必须确保WAMP不仅侦听localhost,否则它不能从任何设备访问(但这不是一个问题的堆栈溢出)。
发布于 2015-06-02 18:51:18
您想要的(不仅对于WAMP服务器,而且对于XAMPP,LAMP)是一个静态IP地址,您可以在任何时候连接到它。
你提到的另一件事是套接字。套接字提供非常基本的数据事务,您需要处理一切,HTTP是一个应用层协议,是传输层的抽象。Web浏览器(通常)使用HTTP。这里是不同的。
对于套接字编程,这里有两个链接:link1和link2。
使用HTTP需要向服务器发送GET或POST响应,可能是由php或django接收的。就密码而言。这就是你要的。
索取请求
public String sendGetRequest() {
HttpClient client = new DefaultHttpClient();
URI website;
try {
website = new URI(url);
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
return response;
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}请求员额
public String sendPostRequest(ArrayList<NameValuePair> nameValuePairs) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try {
// Add your data
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
if (response != null)
return response;
else
{
Log.e("Request", "response is null");
return null;
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return null;
}解析响应以检查服务器的响应方式。应用程序的功能应该是减轻用户的负担,而不是为用户提供已经存在的解决方案。我建议您不要使用webview(只需显示相关信息,组织得当)。
编辑:这里的是HTTP与TCP的一个很好的解释。
https://stackoverflow.com/questions/30511254
复制相似问题