1. 程式人生 > >java做伺服器,android做客戶端,實現資料傳輸

java做伺服器,android做客戶端,實現資料傳輸

許久未動筆,有個小專案開始動工。

需要用一臺windows電腦做伺服器,在android端與其進行資料交換,實現一些業務。

簡單起見,用java寫這個伺服器,以前沒做過,試試水。很簡單的程式碼,純粹找思路。

伺服器端程式碼:

package com.test;

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

public class MyServer {
	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端連線上來,傳送一句話給android。

android端程式碼:

package com.teat;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TestSocketActivity extends Activity {
	private TextView myTextView;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		myTextView = (TextView) findViewById(R.id.textView1);
		try {
			myTextView.setText("0");
			Socket socket = new Socket("192.168.1.100", 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();
		}
	}
}

方便起見,ip地址是寫死的,通過dos視窗下的ipconfig指令檢視自己電腦的本地ip,然後把下面這行程式碼裡的ip修改成你電腦的ip就可以正常通訊了。

Socket socket = new Socket("192.168.1.100", 8888);

作者:jason0539