Socket通常也称做”套接字“,用于描述IP地址和端口,它就是网络通信过程中端点的抽象表示。Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。

  • SocketServer类,服务器实现:
public class SocketServer {          ServerSocket sever;          public SocketServer(int port){         try{             sever = new ServerSocket(port);         }catch(IOException e){             e.printStackTrace();         }     }          public void beginListen(){         while(true){             try{                 final Socket socket = sever.accept();                                  new Thread(new Runnable(){                     public void run(){                         BufferedReader in;                         try{                             in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));                             PrintWriter out = new PrintWriter(socket.getOutputStream());                             while (!socket.isClosed()){                                 String str;                                 str = in.readLine();                                 out.println("Hello!world!! " + str);                                 out.flush();                                 if (str == null || str.equals("end"))                                     break;                                 System.out.println(str);                             }                             socket.close();                         }catch(IOException e){                             e.printStackTrace();                         }                     }                 }).start();             }catch(IOException e){                 e.printStackTrace();             }         }     } }
public class TestSocketServer {          public static void main(String[] argvs){         SocketServer server = new SocketServer(12345);         server.beginListen();     } }

客户端实现:
public class SocketClientDemo extends Activity implements Runnable {    private TextView tv_msg = null;    private EditText ed_msg = null;    private Button btn_send = null;    private static final String HOST = "192.168.1.223";    private static final int PORT = 12345;    private Socket socket = null;    private BufferedReader in = null;    private PrintWriter out = null;    private String content = "";    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        tv_msg = (TextView) findViewById(R.id.TextView);        ed_msg = (EditText) findViewById(R.id.EditText01);        btn_send = (Button) findViewById(R.id.Button01);        try {            socket = new Socket(HOST, PORT);            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(                    socket.getOutputStream())), true);        } catch (IOException ex) {            ex.printStackTrace();            ShowDialog("login exception" + ex.getMessage());        }        btn_send.setOnClickListener(new Button.OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                String msg = ed_msg.getText().toString();                if (socket.isConnected()) {                    if (!socket.isOutputShutdown()) {                        out.println(msg);                    }                }            }        });        new Thread(SocketDemo.this).start();    }    public void run() {        try {            while (true) {                if (socket.isConnected()) {                    if (!socket.isInputShutdown()) {                        if ((content = in.readLine()) != null) {                            content += "\n";                            Log.d("socket","socket:"+content);                        } else {                        }                    }                }            }        } catch (Exception e) {            e.printStackTrace();        }    }}

注意在AndroidManifest.xml中加入对网络的访问权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>




更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. python list.sort()根据多个关键字排序的方法实现
  3. android EditText设置不可写
  4. Android(安卓)拨号器的简单实现
  5. android实现字体闪烁动画的方法
  6. Android中不同应用间实现SharedPreferences数据共享
  7. [Android(安卓)NDK]Android(安卓)JNI开发例子 ---3 在JNI中实现o
  8. haproxy根据客户端浏览器进行跳转
  9. Android(安卓)Vibrator使用

随机推荐

  1. ListView特效2(列表拖拽)
  2. Android(安卓)自定义RadioButton的样式
  3. android让图片等比例缩放
  4. Android(安卓)为按键添加声音(转载)
  5. android之AIDL跨进程通信详解 (四)AIDL中
  6. 【Android(安卓)自定义控件】自定义View
  7. Android杀死正在运行的进程
  8. Http的请求方式
  9. Android中资源限定符hdpi large等的优先
  10. [Android环境搭建] 申请Android(安卓)Map