android - Java 中的服务器(Http/套接字)

标签 android

我想构建一个 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/

相关文章:

java - Android 无法发送多播 UDP 数据报

java - Android https 长轮询 : Cannot receive response when polling interval is longer than 70 seconds

android - 如何在 Android kotlin、Moshi 和 Retrofit 中解析带有动态键的嵌套 JSON?

java - 如何区分字节数组和字符串

android - 在每个 ListView 元素内的 imageView 上添加一个 OnClickListener

android - 我已经从Android Studio构建了一个APK文件,但是在上载到Playstore时出现以下错误

java - Android:BitmapFactory:无法解码流:java.io.FileNotFoundException:DataSnapshot { key = image,value = https:/firebasestorage

android - 即使下载不成功(空间不足时)也获取 "DownloadManager.STATUS_SUCCESSFUL"

android - 如何使用java代码在sp值中分配文本大小

Android设置背景资源和颜色