java服务器端与android客户端的通信

服务器端的工作非常简单,建立socket.监听,代码如下:

package com.hdc.socket;

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class JavaServer {
	public static void main(String[] args) {
		try {
			ServerSocket server = new ServerSocket(8888);
			while (true) {  
				System.out.println("execute 1\n");  
				Socket client = server.accept();  
				System.out.println("execute 2\n");  
				OutputStream out = client.getOutputStream();  
				System.out.println("execute 3\n");  
				String msg = "hello android";  
				out.write(msg.getBytes());  
				System.out.println("execute 4\n");
				client.close();  
			 }  

		} catch (IOException e) {
			 
			e.printStackTrace();
		}

	}

}

  端口号:8888,等待客户端连接!

然后看android客户端的编码:

因为操作线程不能在主线程,故:

 1 package com.hdc.sockettestclient;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.widget.TextView;
 6 
 7 public class MainActivity extends Activity {
 8     private TextView myTextView;
 9 
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14 
15         myTextView = (TextView) findViewById(R.id.textView1);
16 
17         new YunTheard(myTextView).start();
18 
19     }
20 }
View Code

 

package com.hdc.sockettestclient;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import android.widget.TextView;

public class YunTheard extends Thread {
	private TextView myTextView;

	public YunTheard(TextView myTextView) {
		super();
		this.myTextView = myTextView;
	}

	@Override
	public void run() {

		try {
			myTextView.setText("0");
			Socket socket = new Socket("172.17.1.41", 8888);
			myTextView.setText("1");
			InputStream in = socket.getInputStream();
			byte[] buffer = new byte[in.available()];
			myTextView.setText("2");
			in.read(buffer);
			myTextView.setText("3");
			String msg = new String(buffer);
			myTextView.setText(msg);

		} catch (UnknownHostException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}
	}
}

  通信成功后客户端会显示来自服务端的hello,android

posted @ 2015-12-07 09:27  拾荒者999  阅读(847)  评论(0编辑  收藏  举报