文章目录

  • 零、学习目标
  • 一、安卓基于HTTP网络编程
    • (一)两种请求方式
    • (二)安卓基于HTTP网络编程的两种方式
      • 1、使用HttpURLConnection访问网络资源
      • 2、利用HttpClient访问网络资源
        • (1)HttpGet
        • (2)HttpPost
  • 二、案例演示 - 利用URLConnection下载网页
    • (一)运行效果
    • (二)涉及知识点
    • (三)实现步骤
      • 1、创建安卓应用【DownloadWebPageByURLConnection】
      • 2、将背景图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、在项目清单文件里授权访问因特网
      • 6、主界面类 - MainActivity
      • 7、启动应用,查看效果
  • 三、案例演示 - 利用URLConnection下载网络图片
    • (一)运行效果
    • (二)涉及知识点
    • (三)实现步骤
      • 1、创建安卓应用【DownloadImageByURLConnection】
      • 2、将背景图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、在项目清单文件里授权访问因特网
      • 6、主界面类 - MainActivity
      • 7、查看要下载的网络图片
      • 8、启动应用,查看效果
      • 9、下载并显示Tomcat服务器上的图片
  • 四、案例演示 - 利用URLConnection下载网络音乐
    • (一)运行效果
    • (二)涉及知识点
    • (三)实现步骤
      • 1、创建安卓应用【DownloadMusicByURLConnection】
      • 2、将背景图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、在项目清单文件里授权访问因特网与读写外置存储卡
      • 6、主界面类 - MainActivity
      • 7、Tomcat服务器上的音乐文件
      • 8、启动应用,查看效果
  • 五、案例演示 - 利用HttpClient下载网页
    • (一)运行效果
    • (二)涉及知识点
    • (三)实现步骤
      • 1、创建安卓应用【DownloadWebPageByHttpClient】
      • 2、将背景图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、在项目清单文件里授权访问因特网
      • 6、修改模块构建文件 - 支持HttpCilent
      • 7、主界面类 - MainActivity
      • 8、启动应用,查看效果
    • (四)小结 - 利用HttpClient访问网络资源
  • 六、课后作业
    • 任务1、利用HttpClient下载并显示网络图片
    • 任务2、利用HttpClient下载并播放网络音乐

零、学习目标

  1. 了解安卓基于HTTP网络编程的两种方式
  2. 能够利用HttpClient访问网络资源
  3. 能够利用URLConnection访问网络资源

一、安卓基于HTTP网络编程

(一)两种请求方式

HTTP协议中有两种不同的请求方式——GET方式和POST方式。

  • GET方式在进行数据请求时,会把数据附加到URL后面传递给服务器,比如常见的:http://XXX.XXX.XXX/XX.jsp?id=1
  • POST方式则是将请求的数据放到HTTP请求头中,作为请求头的一部分传入服务器。

所以,在进行HTTP编程前,首先要明确究竟使用的哪种方式进行数据请求的。

(二)安卓基于HTTP网络编程的两种方式

1、使用HttpURLConnection访问网络资源

HttpURLConnection conn = null;
String strUrl = "http://www.baidu.com";
URL url = new URL(strUrl);
conn = (HttpURLConnection) url.openConnection();
  • HttpURLConnection对网络资源的请求在默认情况下是使用GET方式的,所以当使用GET方式时,不需要我们做太多的工作;当我们需要使用POST方式时,就需要使用setRequestMethod("POST")来设置POST请求方式了。

2、利用HttpClient访问网络资源

  • HttpClient类不是来自安卓,而是来自org.apache.http。和HttpURLConnection相同,HttpClient也存在GET和POST两种请求方式。

(1)HttpGet

在HttpClient中,我们可以非常轻松使用HttpGet对象来通过GET方式进行数据请求操作,当获得HttpGet对象后我们可以使用HttpClient的execute方法来向我们的服务器发送请求。在发送的GET请求被服务器相应后,会返回一个HttpResponse响应对象,利用这个响应的对象我们能够获得响应回来的状态码,如:200、400、401等等。

public String HttpGetMethod() {                                                   String result = "";                                                           try {                                                                         HttpGet httpRequest = new HttpGet(strUrl);                                HttpClient httpClient = new DefaultHttpClient();                          HttpResponse httpResponse = httpClient.execute(httpRequest);              if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {   result = EntityUtils.toString(httpResponse.getEntity());              } else {                                                                  result = "null";                                                      }                                                                         return result;                                                            } catch (Exception e) {                                                       return null;                                                              }
}

(2)HttpPost

当我们使用POST方式时,我们可以使用HttpPost类来进行操作。当获取了HttpPost对象后,我们就需要向这个请求体传入键值对,这个键值对我们可以使用NameValuePair对象来进行构造,然后再使用HttpRequest对象最终构造我们的请求体,最后使用HttpClient的execute方法来发送我们的请求,并在得到响应后返回一个HttpResponse对象。其他操作和我们在HttpGet对象中的操作一样。

public String HttpPostMethod(String key, String value) {                            String result = "";                                                             try {                                                                           // HttpPost连接对象                                                             HttpPost httpRequest = new HttpPost(strUrl);                                // 使用NameValuePair来保存要传递的Post参数                                             List<NameValuePair> params = new ArrayList<NameValuePair>();                // 添加要传递的参数                                                                 params.add(new BasicNameValuePair(key, value));                             // 设置字符集                                                                    HttpEntity httpentity = new UrlEncodedFormEntity(params, "Utf-8");          // 请求httpRequest                                                            httpRequest.setEntity(httpentity);                                          // 取得默认的HttpClient                                                          HttpClient httpclient = new DefaultHttpClient();                            // 取得HttpResponse                                                           HttpResponse httpResponse = httpclient.execute(httpRequest);                // HttpStatus.SC_OK表示连接成功                                                   if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {     // 取得返回的字符串                                                             result = EntityUtils.toString(httpResponse.getEntity());                return result;                                                          } else {                                                                    return "null";                                                          }                                                                           } catch (Exception e) {                                                         return null;                                                                }
}

二、案例演示 - 利用URLConnection下载网页

(一)运行效果

(二)涉及知识点

  1. 线性布局(LinearLayout)
  2. 标签(TextView·)
  3. 文本编辑框(EditText)
  4. 按钮(Button)
  5. 网址连接类(URLConnection)
  6. 异步任务(AsynTask)

(三)实现步骤

1、创建安卓应用【DownloadWebPageByURLConnection】


2、将背景图片拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"android:padding="20dp"><EditTextandroid:id="@+id/edtUrl"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_url"android:textSize="20sp"android:lines="2" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btnDownload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doDownload"android:text="@string/download" /><Buttonandroid:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClear"android:text="@string/clear" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#bbbbbb" /><ScrollViewandroid:id="@+id/svContent"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tvContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#0000ff"android:textSize="18sp" /></ScrollView>
</LinearLayout>

4、字符串资源文件strings.xml

<resources><string name="app_name">利用URLConnection下载网页</string><string name="input_url">请输入网址</string><string name="download">下载</string><string name="clear">清空</string>
</resources>

5、在项目清单文件里授权访问因特网

6、主界面类 - MainActivity

package net.hw.urlconnection;import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/*** 功能:利用UrlConnection下载网页文件* 作者:华卫* 日期:2021年01月02日*/
public class MainActivity extends AppCompatActivity {private EditText edtUrl; // 网址编辑框private TextView tvContent; // 显示网页内容的标签@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识获得控件实例edtUrl = (EditText) findViewById(R.id.edtUrl);tvContent = (TextView) findViewById(R.id.tvContent);}/*** 下载单击事件处理方法** @param view*/public void doDownload(View view) {// 获取网址字符串String strUrl = edtUrl.getText().toString();// 创建下载任务DownloadTask task = new DownloadTask();// 执行下载任务(传入网址)task.execute(strUrl);}/*** 清空单击事件处理方法** @param view*/public void doClear(View view) {// 清空网址编辑框edtUrl.setText("");// 清空网页内容标签tvContent.setText("");// 让网址编辑框获取焦点edtUrl.requestFocus();}/*** 下载资源的异步任务*/private class DownloadTask extends AsyncTask<String, Double, String> {private static final String TAG = "download_webpage";// 异步任务执行前要执行的操作@Overrideprotected void onPreExecute() {super.onPreExecute();Log.d(TAG, "开始下载网页");}// 后台进行的耗时操作@Overrideprotected String doInBackground(String... params) {// 获取网址字符串(params[0]表示执行异步任务时传入的第一个参数值)String strUrl = params[0];// 定义网页内容String content = "";try {// 创建URL对象URL url = new URL(strUrl);// 定义URL连接URLConnection connection = url.openConnection();// 获取字节输入流InputStream is = connection.getInputStream();// 将字节输入流转换成字符输入流InputStreamReader isr = new InputStreamReader(is);// 将字符输入流包装成缓冲字符输入流BufferedReader br = new BufferedReader(isr);// 定义文本行字符串String nextLine = "";// 定义字符串生成器StringBuilder builder = new StringBuilder();// 行读取整个缓冲字符输入流while ((nextLine = br.readLine()) != null) {// 将每一行内容添加到字符串生成器builder.append(nextLine + "\n");// 发布异步任务执行的进度publishProgress((double)builder.toString().length());}// 获取网页内容content = builder.toString();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 返回网页内容return content;}// 异步任务执行后要进行的操作@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);// 判断网页读取是否成功if (!result.equals("")) {// 显示网页内容tvContent.setText(result);} else {// 提示用户网页读取失败Toast.makeText(MainActivity.this, "网页读取失败!", Toast.LENGTH_SHORT).show();}}// 更新异步任务执行的进度@Overrideprotected void onProgressUpdate(Double... values) {super.onProgressUpdate(values);// 在日志里输出下载进度Log.d(TAG, "已读取" + values[0] + "个字符");}}
}

7、启动应用,查看效果



三、案例演示 - 利用URLConnection下载网络图片

(一)运行效果

(二)涉及知识点

  1. 线性布局(LinearLayout)
  2. 图像视图(ImageView·)
  3. 文本编辑框(EditText)
  4. 按钮(Button)
  5. 网址连接类(URLConnection)
  6. 异步任务(AsynTask)

(三)实现步骤

1、创建安卓应用【DownloadImageByURLConnection】


2、将背景图片拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:gravity="center"android:orientation="vertical"android:padding="10dp"><EditTextandroid:id="@+id/edtImageUrl"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_image_url"android:lines="3" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btnDownload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doDownload"android:text="@string/download"android:textSize="20sp" /><Buttonandroid:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClear"android:text="@string/clear"android:textSize="20sp" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#bbbbbb" /><ProgressBarandroid:id="@+id/pbDownloadImage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="gone" /><ImageViewandroid:id="@+id/ivImage"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitXY" />
</LinearLayout>

4、字符串资源文件strings.xml

<resources><string name="app_name">利用URLConnection下载网络图片</string><string name="download">下载</string><string name="input_image_url">输入图片网址</string><string name="clear">清空</string>
</resources>

5、在项目清单文件里授权访问因特网

6、主界面类 - MainActivity

7、查看要下载的网络图片

https://img.taopic.com/uploads/allimg/110715/9125-110G514255277.jpg

8、启动应用,查看效果

9、下载并显示Tomcat服务器上的图片

  • 在Tomcat-8.5.58的webapps目录创建images,然后在images目录里放置一个图片文件scenery.jpg

  • 启动Tomcat服务器

  • 在浏览器里访问服务器上的图片


  • 在安卓应用上下载并显示该图片

  • 注意:图片网址只能用IP地址 - http://192.168.1.5:8080/images/scenery.jpg,不能用http://localhost:8080/images/scenery.jpg,因为在安卓模拟器上运行安卓应用,localhost指的不是本地的Tomcat服务器,而是安卓模拟器。

四、案例演示 - 利用URLConnection下载网络音乐

(一)运行效果

(二)涉及知识点

  1. 线性布局(LinearLayout)
  2. 媒体播放器(MediaPlayer)
  3. 文本编辑框(EditText)
  4. 按钮(Button)
  5. 网址连接类(URLConnection)
  6. 异步任务(AsynTask)

(三)实现步骤

1、创建安卓应用【DownloadMusicByURLConnection】


2、将背景图片拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:gravity="center"android:orientation="vertical"android:padding="10dp"><EditTextandroid:id="@+id/edtMusicUrl"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_music_url"android:lines="3" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btnDownload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doDownload"android:text="@string/download"android:textSize="20sp" /><Buttonandroid:id="@+id/btnPlay"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doPlay"android:text="@string/play"android:textSize="20sp" /><Buttonandroid:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClear"android:text="@string/clear"android:textSize="20sp" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#bbbbbb" /><ProgressBarandroid:id="@+id/pbDownloadMusic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="gone" />
</LinearLayout>

4、字符串资源文件strings.xml

<resources><string name="app_name">利用URLConnection下载放网络音乐</string><string name="download">下载</string><string name="input_music_url">输入音乐网址</string><string name="play">播放</string><string name="clear">清空</string>
</resources>

5、在项目清单文件里授权访问因特网与读写外置存储卡

6、主界面类 - MainActivity

7、Tomcat服务器上的音乐文件


  • 启动Tomcat服务器,访问http://192.168.1.5:8080/music/Terra.mp3

8、启动应用,查看效果

  • 查看下载的音乐文件

五、案例演示 - 利用HttpClient下载网页

(一)运行效果

(二)涉及知识点

  1. 线性布局(LinearLayout)
  2. 标签(TextView·)
  3. 文本编辑框(EditText)
  4. 按钮(Button)
  5. HTTP客户端(HTTPClient)
  6. 异步任务(AsynTask)

(三)实现步骤

1、创建安卓应用【DownloadWebPageByHttpClient】


2、将背景图片拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"android:padding="10dp"><EditTextandroid:id="@+id/edtUrl"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_url"android:lines="2"android:textSize="20sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:id="@+id/btnDownload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doDownload"android:text="@string/download"android:textSize="20sp" /><Buttonandroid:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClear"android:text="@string/clear"android:textSize="20sp" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#bbbbbb" /><ScrollViewandroid:id="@+id/svContent"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tvContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#0000ff"android:textSize="18sp" /></ScrollView>
</LinearLayout>

4、字符串资源文件strings.xml

<resources><string name="app_name">利用HttpClient下载网页文件</string><string name="input_url">请输入网址</string><string name="download">下载</string><string name="clear">清空</string>
</resources>

5、在项目清单文件里授权访问因特网

6、修改模块构建文件 - 支持HttpCilent

  • 熟悉安卓网络开发的人,对于HttpClient一定不会陌生,但是从安卓6.0开始,Google已经移除了HttpClient库的支持,而推荐使用HttpURLConnection。不过如果希望继续使用HttpClient,Google也提供了方法。在模块构建文件的android{}里添加一句:useLibrary 'org.apache.http.legacy'

7、主界面类 - MainActivity

package net.hw.download_webpage;import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.net.MalformedURLException;
/*** 功能:利用HttpClient访问网页文件* 作者:华卫* 日期:2021年01月03日*/
public class MainActivity extends AppCompatActivity {private EditText edtUrl; // 网址编辑框private TextView tvContent; // 显示网页内容的标签@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识符获取控件实例edtUrl = findViewById(R.id.edtUrl);tvContent = findViewById(R.id.tvContent);}/*** 下载按钮单击事件处理方法** @param view*/public void doDownload(View view) {// 获取网址字符串String strUrl = edtUrl.getText().toString();// 创建下载任务DownloadTask task = new DownloadTask();// 执行下载任务(传入网址)task.execute(strUrl);}/*** 清空按钮单击事件处理方法** @param view*/public void doClear(View view) {// 清空网址编辑框edtUrl.setText("");// 清空网页内容标签tvContent.setText("");// 让网址编辑框获取焦点edtUrl.requestFocus();}/*** 下载资源的异步任务*/private class DownloadTask extends AsyncTask<String, Integer, String> {private static final String TAG = "download_webpage";// 异步任务执行前要执行的操作@Overrideprotected void onPreExecute() {super.onPreExecute();Toast.makeText(MainActivity.this, "开始下载……", Toast.LENGTH_SHORT).show();}// 后台进行的耗时操作@Overrideprotected String doInBackground(String... params) {// 获取网址字符串(params[0]表示执行异步任务时传入的第一个参数值)String strUrl = params[0];// 定义网页内容String content = "";try {// 创建http请求HttpGet request = new HttpGet(strUrl);// 创建http客户端HttpClient client = new DefaultHttpClient();// 执行http请求,返回响应对象HttpResponse response = client.execute(request);// 响应成功if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {// 获取响应的数据HttpEntity entity = response.getEntity();// 将响应数据转换成字符串content = EntityUtils.toString(entity, "utf-8");}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 返回网页内容return content;}// 异步任务执行后要进行的操作@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);// 判断网页读取是否成功if (!result.equals("")) {// 显示网页内容tvContent.setText(result);} else {// 提示用户网页读取失败Toast.makeText(MainActivity.this, "网页读取失败!", Toast.LENGTH_SHORT).show();}}// 更新异步任务执行的进度@Overrideprotected void onProgressUpdate(Integer... values) {super.onProgressUpdate(values);// 在日志里输出下载进度Log.d(TAG, "已读取" + values[0] + "个字符");}}
}

8、启动应用,查看效果

(四)小结 - 利用HttpClient访问网络资源

  1. 创建http请求(get方式、post方式)
  2. 创建http客户端
  3. 对于post方式请求,设置请求参数
  4. 执行http请求,返回响应对象
  5. 响应成功后 获取响应的数据
  6. 对响应数据进行相关操作

六、课后作业

任务1、利用HttpClient下载并显示网络图片

任务2、利用HttpClient下载并播放网络音乐

安卓学习笔记42:基于HTTP网络编程相关推荐

  1. Linux学习笔记(3)- 网络编程以及范例程序

    Linux学习笔记(3)- 网络编程以及范例程序 前言 网络介绍 IP地址的介绍 端口和端口号的介绍 通信流程 socket介绍 TCP介绍 python3编码转换 TCP客户端程序开发流程 多任务版 ...

  2. JavaSE学习笔记_20:Java网络编程

    Java网络编程     温馨提示1: (1)网络编程这一块会涉及到很多不同异常,得抛. (2)涉及到iO,还是按照iO的思想来解决问题. (3)接收端和发送端或者是服务端和客户端程序开启之后,两者的 ...

  3. python学习笔记(十 三)、网络编程

    最近心情有点儿浮躁,难以静下心来 Python提供了强大的网络编程支持,很多库实现了常见的网络协议以及基于这些协议的抽象层,让你能够专注于程序的逻辑,而无需关心通过线路来传输比特的问题. 1 几个网络 ...

  4. 学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯

    1.基于线程池实现并发套接字通讯:因为套接字涉及地是I/O密集模型,因此使用多线程会有高效率 ''' 服务器 '''#基于线程池完成并发的套接字通讯 from socket import * from ...

  5. java马士兵网络编程_学习笔记-马士兵java - 网络编程

    1. 网络基础 a. 计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地相互传递信息,共享硬件.软件.数据信息等资源. ...

  6. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  7. 安卓学习笔记40:基于套接字网络编程

    文章目录 零.学习目标 一.Socket概述 (一)两种传输模式 (二)基于Socket网络编程 三.案例演示 - C/S架构聊天室 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建聊天服务 ...

  8. 影像组学视频学习笔记(35)-基于2D超声影像的影像组学特征提取、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/f82d30289d68 来源:简书,已获转载授权 RadiomicsWorld.com "影像组学世界" ...

  9. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

最新文章

  1. J2EE 中的服务器 tomcat6.0 配置
  2. oracle函数胡书写,Oracle中序列表sequence的使用.docx
  3. 第十六章--访问文件
  4. bzoj2333[SCOI2011]棘手的操作
  5. 【JavaWeb】石家庄地铁搭乘系统——第一版(功能尚未完善)
  6. linux 装jdk出错,redhat linux 9.0安装jdk出错,该如何解决
  7. 解决磁盘IO紧张的一种方法
  8. C语言--16进制转字符串
  9. 星河互联刘玮玮:Echo卖疯了,为什么擅长制造爆款的中国人又没跟上?
  10. 计算机怎么识别ascll汉字,汉字的ASCII码表示和编码是怎样的?
  11. 模拟微博登陆,获取微博cookie
  12. 计算机智能科学与技术高校排名,2021年全国智能科学与技术专业大学排名(原创)...
  13. android 苹果备忘录,你会不会用苹果备忘录?白白放弃这么逆天的功能,不如换安卓机!...
  14. VC6.0 快捷键整理
  15. 80端口和443端口的区别
  16. 第七十二章 Caché 函数大全 $WISWIDE 函数
  17. 草履虫纳米机器人_一种磁性微纳机器人的磁场控制方法与流程
  18. go语言输出汉字的数量
  19. pr学习日记①初接触
  20. 用计算机制作程序框图,流程图 结构图制作更轻松

热门文章

  1. 【华为云技术分享】基于小熊派开发板的智慧路灯开发版本更新
  2. 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
  3. 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
  4. MySQL无中心化集群_MySQL Plus 如何做到无中心化、数据强一致性、秒级切换?
  5. Int VS Integer
  6. daemons java,java.lang.ThreadGroup.isDaemon()方法实例
  7. 蔚来测开提前批面试(一面)
  8. 注意力机制BAM和CBAM详细解析(附代码)
  9. Lenet神经网络实现
  10. 优达学城深度学习之六——TensorFlow卷积神经网络