Android客户端和Python服务器通信(一)

作者: zheng_zq | 来源:发表于2019-02-05 19:42 被阅读704次

怎么查看IP地址

  • cmd后输入ipconfig,如图:
    image.png
    Ipv4对应的就是我们需要的IP地址。
  • 如果输入ipconfig后报错:'ipconfig'不是内部或外部命令,也不是可运行的程序或批处理文件。
    很有可能是环境变量的问题,可按照以下方法解决。
  1. 打开C盘,搜索文件"ipconfig.exe"
  2. 复制其路径,路径一般是C:\Windows\System32,如图:
    image.png
  3. 右击此电脑,属性,高级系统设置,环境变量,在系统变量一栏找到Path
  4. 点击编辑,如图:
    image.png
  5. 如图所示操作即可:


    image.png
  6. 添加完系统变量后,cmd再输入config即可。

Python服务器怎么写

from socket import *
import easygui

test1="hello"
# 1 定义域名和端口号
HOST,PORT ='',555
# 2 定义缓冲区(缓存)
BUFFER_SIZE = 1024
ADDR=(HOST,PORT)
# 3 创建服务器套接字 AF_INET:IPv4  SOCK_STREAM:协议
tcpServerSocket = socket(AF_INET,SOCK_STREAM)
# 4 绑定域名和端口号
tcpServerSocket.bind(ADDR)
# 5 监听连接  最大连接数
tcpServerSocket.listen(5)
# 6 定义一个循环 目的:等待客户端的连接
while True:
    # 6.1 打开一个客户端对象 同意连接
    tcpClientSocket,addr = tcpServerSocket.accept()
    print(addr)
    # 连接成功后就弹出界面
    Yes_or_No = easygui.buttonbox("是否发送数据?", choices = ['Yes','No','退出'])
    if Yes_or_No=='退出':break
    if Yes_or_No=='Yes':
        tcpClientSocket.send(test1.encode())
# 7 关闭资源
    tcpClientSocket.close()
tcpServerSocket.close()

效果如图:

image.png

Android客户端怎么写

(以下代码在android studio3.2版本 API:16编译通过)
MainActivity:

package com.example.mrzheng.socket01;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.InputStream;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {

    private final int HANDLER_MSG_TELL_RECV = 0x124;
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        public void handleMessage(Message msg){
            //接受到服务器信息时执行
            Toast.makeText(MainActivity.this,(msg.obj).toString(),Toast.LENGTH_LONG).show();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startNetThread();
    }
    private void startNetThread() {
        new Thread() {
            @Override
            public void run() {
                try {
                    Socket socket = new Socket("192.168.1.103", 555);
                    InputStream is = socket.getInputStream();
                    byte[] bytes = new byte[1024];
                    int n = is.read(bytes);
                    Message msg = handler.obtainMessage(HANDLER_MSG_TELL_RECV, new String(bytes, 0, n));
                    msg.sendToTarget();
                    is.close();
                    socket.close();
                } catch (Exception e) {
                }
            }
        }.start();
    }


}

最重要的是在AndroidManifest.xml上加上以下代码

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

效果图:

Screenshot_2019-02-05-19-41-37-465_com.example.mr.jpg

相关文章

网友评论

    本文标题:Android客户端和Python服务器通信(一)

    本文链接:https://www.haomeiwen.com/subject/aopvsqtx.html