本文实例讲述了python服务器与android客户端socket通信的方法。分享给大家供大家参考。具体实现方法如下:
首先,服务器端使用python完成,下面为python代码:
复制代码 代码如下:#server.py  
import socket  
def getipaddrs(hostname):#只是为了显示IP,仅仅测试一下  
    result = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)  
    return [x[4][0] for x in result]  
  
host = ''#为空代表为本地host  
hostname = socket.gethostname()  
hostip = getipaddrs(hostname)  
print('host ip', hostip)#应该显示为:127.0.1.1  
port = 9999     # Arbitrary non-privileged port  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.bind((host, port))  
s.listen(4)  
while True:  
    conn, addr = s.accept()  
    print('Connected by', addr)  
    data = conn.recv(1024)  
    if not data: break  
    conn.sendall(data)#把接收到数据原封不动的发送回去  
    print('Received', repr(data))  
    conn.close()
下面是Android代码:
复制代码 代码如下:import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.net.Socket;  
import java.net.UnknownHostException;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
import android.util.Log;  
  
public class TcpClient extends Activity {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        runTcpClient();  
        finish();  
    }  
      
    private static final int TCP_SERVER_PORT = 9999;//should be same to the server port  
    private void runTcpClient() {  
        try {  
            Socket s = new Socket("**.**.intel.com", TCP_SERVER_PORT);//注意host改成你服务器的hostname或IP地址  
            BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));  
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));  
            //send output msg  
            String outMsg = "TCP connecting to " + TCP_SERVER_PORT + System.getProperty("line.separator");   
            out.write(outMsg);//发送数据  
            out.flush();  
            Log.i("TcpClient", "sent: " + outMsg);  
            //accept server response  
            String inMsg = in.readLine() + System.getProperty("line.separator");//得到服务器返回的数据  
            Log.i("TcpClient", "received: " + inMsg);  
            //close connection  
            s.close();  
        } catch (UnknownHostException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }   
    }  
    //replace runTcpClient() at onCreate with this method if you want to run tcp client as a service  
    private void runTcpClientAsService() {  
        Intent lIntent = new Intent(this.getApplicationContext(), TcpClientService.class);  
        this.startService(lIntent);  
    }  
}
安卓代码中要注意的就是服务器的地址要写对,而且要保证服务器是可以被你的网段访问的。
希望本文所述对大家的Python程序设计有所帮助。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
 
                        