python服务器与android客户端socket通信实例
本文实例讲述了python服务器与android客户端socket通信的方法。分享给大家供大家参考。具体实现方法如下:
首先,服务器端使用python完成,下面为python代码:
#server.py importsocket defgetipaddrs(hostname):#只是为了显示IP,仅仅测试一下 result=socket.getaddrinfo(hostname,None,0,socket.SOCK_STREAM) return[x[4][0]forxinresult] host=''#为空代表为本地host hostname=socket.gethostname() hostip=getipaddrs(hostname) print('hostip',hostip)#应该显示为:127.0.1.1 port=9999 #Arbitrarynon-privilegedport s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((host,port)) s.listen(4) whileTrue: conn,addr=s.accept() print('Connectedby',addr) data=conn.recv(1024) ifnotdata:break conn.sendall(data)#把接收到数据原封不动的发送回去 print('Received',repr(data)) conn.close()
下面是Android代码:
importjava.io.BufferedReader; importjava.io.BufferedWriter; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.OutputStreamWriter; importjava.net.Socket; importjava.net.UnknownHostException; importandroid.app.Activity; importandroid.content.Intent; importandroid.os.Bundle; importandroid.util.Log; publicclassTcpClientextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); runTcpClient(); finish(); } privatestaticfinalintTCP_SERVER_PORT=9999;//shouldbesametotheserverport privatevoidrunTcpClient(){ try{ Sockets=newSocket("**.**.intel.com",TCP_SERVER_PORT);//注意host改成你服务器的hostname或IP地址 BufferedReaderin=newBufferedReader(newInputStreamReader(s.getInputStream())); BufferedWriterout=newBufferedWriter(newOutputStreamWriter(s.getOutputStream())); //sendoutputmsg StringoutMsg="TCPconnectingto"+TCP_SERVER_PORT+System.getProperty("line.separator"); out.write(outMsg);//发送数据 out.flush(); Log.i("TcpClient","sent:"+outMsg); //acceptserverresponse StringinMsg=in.readLine()+System.getProperty("line.separator");//得到服务器返回的数据 Log.i("TcpClient","received:"+inMsg); //closeconnection s.close(); }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } //replacerunTcpClient()atonCreatewiththismethodifyouwanttoruntcpclientasaservice privatevoidrunTcpClientAsService(){ IntentlIntent=newIntent(this.getApplicationContext(),TcpClientService.class); this.startService(lIntent); } }
安卓代码中要注意的就是服务器的地址要写对,而且要保证服务器是可以被你的网段访问的。
希望本文所述对大家的Python程序设计有所帮助。