本文实例讲述了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); } }安卓代码中要注意的就是服务器的地址要写对,而且要保证服务器是可以被你的网段访问的。
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!