服务器端:java代码php
package com; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class server { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.print("接受串:"); try{ ServerSocket server=new ServerSocket(1116); while(true){ Socket socket=server.accept(); BufferedWriter writer=new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())); writer.write("dadasdsada"); writer.flush(); //清空缓存中的数据 writer.close(); } } catch(IOException e){ e.printStackTrace(); } } }
客户端android代码:java
package com; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; import com.android_clinent.R; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class client extends Activity{ Button btn; TextView txt; String line; String HOST="192.168.0.105"; int PORT=1116; public void onCreate(Bundle SavedInstanceState){ super.onCreate(SavedInstanceState); setContentView(R.layout.main); initControl(); } public void initControl(){ btn=(Button)findViewById(R.id.button1); txt=(TextView)findViewById(R.id.editText1); btn.setOnClickListener(new ReListener()); } class ReListener implements OnClickListener{ @Override public void onClick(View arg0) { //在android4.0以上的系统中,是不容许在主线程里面去执行网络相关的请求,不然会报错:NetworkOnMainThreadException new Thread(){ public void run(){ // TODO Auto-generated method stub try{ Socket socket=new Socket(HOST,PORT); BufferedReader br=new BufferedReader( new InputStreamReader(socket.getInputStream())); line=br.readLine(); if(line!=null) { //不要在UI线程以外访问Andoid的UI组件包, 用View.post(Runnable) txt.post(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub txt.setText(line); } }); }else { txt.setText("有问题"); } br.close(); } catch(UnknownHostException e){ e.getStackTrace(); } catch(IOException e){ e.getStackTrace(); } } }.start(); } } }
服务端运行结果:android
接受串:
客户端android真机上运行结果:web
执行前:缓存
执行后:服务器
另外在配置文件中记得加上权限:<uses-permission android:name="android.permission.INTERNET">
测试的时候先启动服务端,而后启动客户端,点击按钮就可获取到服务端信息。这是在是一个灰常简单的有关android socket的小例子,能够初步对socket有个简单的了解,这个笔记就先记到这里!网络
参考文章:http://www.apkbus.com/forum.php?mod=viewthread&tid=122400app