我想构建一个 Http 服务器,它将为 android 中的聊天应用程序的请求提供服务。因为我真的很困惑......在我的代码中我必须使用套接字?我怎样才能让客户端与服务器通信?为了接受来自客户端的请求并响应它们,我必须在服务器中添加哪个代码?我在客户端使用的代码如下:
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost:80");
List< BasicNameValuePair > nvps = new ArrayList< BasicNameValuePair >();
nvps.add(new BasicNameValuePair("username", username1));
nvps.add(new BasicNameValuePair("password", password1));
try {
UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);
httppost.setEntity(p_entity);
//Execute HTTP Post Request
HttpResponse response = client.execute(httppost);
Log.v(TAG,"something");
Log.v(TAG, response.getStatusLine().toString());
HttpEntity responseEntity = response.getEntity();
拜托,我真的需要一个答案。谢谢!!!
最佳答案
Sockets(客户端用Socket,服务端用ServerSocket)是最基本的通信层。您选择了 TCP 或 UDP,并且需要对所有协议(protocol)进行编码。
还有一些库对更高级别的协议(protocol)(HTTP、FTP,甚至更高级别的 SOAP)进行编码。如果您使用这些库,您通常不需要管理套接字,因为它由库本身完成(在服务器中您只需指定端口和可选的 IP 绑定(bind)到;在客户端中您指定要连接的主机和端口)。
您可以使用不同的组合(例如,使用 SOAP 实现服务器,然后使用 Socket 从客户端创建和发送 SOAP 消息),但最简单的方法是为服务器和客户端使用相同的库。
关于哪个更好:这取决于您想要它做什么。更高级别的库更灵活,但可能需要一些时间才能掌握,并且可能有更多的开销,较低级别的需求需要您管理所有内容。如果没有更令人信服的理由,我通常只使用 HTTP 协议(protocol)(来自 JVM 或来自 Apache 基金会项目)。
关于android - Java 中的服务器(Http/套接字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880202/