Posted in Python onNovember 12, 2014
本文实例讲述了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程序设计有所帮助。
python服务器与android客户端socket通信实例
- Author -
shichen2014声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@