I have written a Java implementation of the most basic socket network communication, this is similar to the previous one, just porting the client code to the phone, and then get the native IP method slightly different.
Let's take a look at the use of Android studio in this article.
3 basic steps to develop Android using Android Studio:
(1) New project
(2) Define the user interface of the application in the XML layout file.
Click Design and text in the circle to toggle the interface
(3) Write the business implementation in Java code.
It's used to write Java code.
In addition, this article also needs to add user rights
OK, here's the code:
Android server-side code:
PackageCom.example.x_yp.socket;ImportAndroid.net.wifi.WifiInfo;ImportAndroid.net.wifi.WifiManager;Importandroid.support.v7.app.ActionBarActivity;ImportAndroid.os.Bundle;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem;ImportAndroid.widget.TextView;Importjava.net.*;ImportJava.io.*; Public classMainactivityextendsactionbaractivity{//define the listening port number Final intServer_port = 30000; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); //Print the IP address of this machineTextView myip=(TextView) Findviewbyid (R.ID.MYIP); Myip.settext (Getlocalipaddress ()); //open a new thread to listen for client connections NewThread () { Public voidrun () {startserver (); }}.start (); } //get the IP address under the local WiFi PrivateString getlocalipaddress () {Wifimanager Wifimanager=(Wifimanager) Getsystemservice (Wifi_service); Wifiinfo Wifiinfo=Wifimanager.getconnectioninfo (); //get 32-bit integer IP address intIpAddress =wifiinfo.getipaddress (); //return integer address converted to "*.*.*.*" address returnString.Format ("%d.%d.%d.%d", (ipAddress& 0xFF), (ipAddress >> 8 & 0xFF), (ipAddress>> & 0xFF), (ipAddress >> & 0xFF)); } //for socket Connection communication Private voidStartServer () {Try{serversocket ServerSocket=NewServerSocket (Server_port); //Loop listening for client connection requests while(true) {Socket ss=serversocket.accept (); Try { //wraps the output stream corresponding to the socket into a printstreamPrintStream PS =NewPrintStream (Ss.getoutputstream ()); //perform normal IO operationsPs.println ("Hello,you has recevied Sever ' s Messege"); //turn off the output stream and close the socketPs.close (); Ss.close (); } Catch(Exception e) {e.printstacktrace (); } finally{ss.close (); } thread.sleep (3000); } } Catch(Exception e) {e.printstacktrace (); }} @Override Public BooleanOncreateoptionsmenu (Menu menu) {//inflate the menu; This adds items to the action bar if it is present.getmenuinflater (). Inflate (R.menu.menu_main, menu); return true; } @Override Public Booleanonoptionsitemselected (MenuItem item) {//Handle Action Bar item clicks here. The Action Bar would//automatically handle clicks on the Home/up button, so long//As you specify a the parent activity in Androidmanifest.xml. intID =Item.getitemid (); //noinspection simplifiableifstatement if(id = =r.id.action_settings) { return true; } return Super. onoptionsitemselected (item); }}
PC Client code:
/**PC-side code PC as client, connect server based on server IP address and port number*/Importjava.net.*;ImportJava.io.*; Public classpc_client{ Public Static voidMain (string[] args)throwsIOException {//SOCKET socket = new Socket ("192.168.47.1", 30000);//Here's the IP address to fill out the IP address of the mobile serverSocket socket =NewSocket ("192.168.1.114", 30000);//Here's the IP address to fill out the IP address of the mobile server//wraps the input stream corresponding to the socket into a bufferedreaderBufferedReader br =NewBufferedReader (NewInputStreamReader (Socket.getinputstream ())); //perform normal IO operationsString line =Br.readline (); System.out.println ("Data from the server:" +Line ); //close the input stream, socketBr.close (); Socket.close (); }}
OK, download to phone, mobile phone and computer can communicate
Add the content of the graphical interface used:
After adding the controls here, set an ID, which is set to Myip
The Java program then connects to the control via the Findviewbyid function.
Here with TextView myip= (TextView) Findviewbyid (R.ID.MYIP);
You can then control the control in Java.
Android phone and computer communication in WiFi environment