本文转自:http://blog.csdn.net/x605940745/article/details/17001641
注意点:注册访问的网络权限;android中UI线程不能有访问网络的操作,否则会报android.os.NetworkOnMainThreadException的异常
- <uses-permission
- android:name="android.permission.INTERNET"/>
实例一
客户端

- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity" >
-
- <EditText
- android:id="@+id/ed1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="给服务器发送信息"/>
- <Button
- android:id="@+id/send"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/ed1"
- android:text="发送"/>
- <TextView
- android:id="@+id/txt1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/send"/>
-
-
-
-
- </RelativeLayout>
服务端
- package com.android.net;
-
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.List;
-
- public class AndroidService {
-
-
- public static void main(String[] args) throws IOException {
- ServerSocket serivce = new ServerSocket(30000);
- while (true) {
-
- Socket socket = serivce.accept();
- new Thread(new AndroidRunable(socket)).start();
- }
- }
-
- }
- package com.android.net;
-
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.Socket;
-
- public class AndroidRunable implements Runnable {
-
- Socket socket = null;
-
- public AndroidRunable(Socket socket) {
- this.socket = socket;
- }
-
- @Override
- public void run() {
-
- String line = null;
- InputStream input;
- OutputStream output;
- String str = "hello world!";
- try {
-
- output = socket.getOutputStream();
- input = socket.getInputStream();
- BufferedReader bff = new BufferedReader(
- new InputStreamReader(input));
- output.write(str.getBytes("gbk"));
- output.flush();
-
- socket.shutdownOutput();
-
- while ((line = bff.readLine()) != null) {
- System.out.print(line);
- }
-
- output.close();
- bff.close();
- input.close();
- socket.close();
-
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- }
实例二
客户端
- package com.android.net;
-
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.List;
-
- public class MyService {
-
-
- public static List<Socket> socketList = new ArrayList<Socket>();
-
- public static void main(String[] args) throws IOException {
- ServerSocket server = new ServerSocket(3000);
- while(true){
- Socket s=server.accept();
- socketList.add(s);
-
- new Thread(new ServiceThreada(s)).start();
-
- }
- }
-
- }
- package com.android.net;
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.Socket;
-
- public class ServiceThreada implements Runnable {
-
-
- Socket s = null;
-
- BufferedReader br = null;
-
- public ServiceThreada(Socket s) {
- this.s = s;
- try {
- br = new BufferedReader(new InputStreamReader(s.getInputStream()));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void run() {
-
- String content = null;
-
- while((content=readFromClient())!=null){
-
-
- for(Socket s:MyService.socketList){
- OutputStream os;
- try {
- os = s.getOutputStream();
- os.write((content+"\n").getBytes("gbk"));
- } catch (IOException e) {
-
- e.printStackTrace();
- }
-
- }
- }
-
- }
-
-
- public String readFromClient() {
- try {
- return br.readLine();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- }
socket编程实例(包含线程的和线程间的通信的使用)
原文:http://www.cnblogs.com/denghaicheng/p/4496582.html