android客戶端與服務器對發信息代碼

客戶端爲android服務器端爲java項目,客戶端與服務器端通過socket實現通訊,代碼如下:


客戶段代碼:

package com.lovo.activity;


import java.io.IOException;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.lovo.client.R;

public class ClientActivity extends Activity implements OnClickListener{
	private Socket socket;
	private Button btnSend;
	private Button btnConnect;
	private EditText edtMessage;
	private TextView tevShowMessage;
	private Handler handler;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btnSend=(Button) findViewById(R.id.main_btn_send);
		btnConnect=(Button) findViewById(R.id.main_btn_connect);
		edtMessage=(EditText) findViewById(R.id.main_edt_message);
		tevShowMessage=(TextView) findViewById(R.id.main_tev_showmessage);
		btnSend.setOnClickListener(this);
		btnConnect.setOnClickListener(this);
		handler=new Handler(){
			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub
				super.handleMessage(msg);
				String str=msg.getData().getString("msg");
				tevShowMessage.setText("服務器說:"+str);
			}
		};
	}
	@Override
	public void onClick(View v) {
		if(v==btnConnect){
			Log.i("connect", "connect");
			try {
				socket=new Socket("192.168.1.121", 4000);
				new Thread(){
					public void run() {
						while(true){
							InputStream in;
							try {
								in = socket.getInputStream();
								BufferedReader br=new BufferedReader(new InputStreamReader(in));
								String str=br.readLine();
								Message msg=new Message();
								Bundle bundle=new Bundle();
								bundle.putString("msg", str);
								msg.setData(bundle);
								handler.sendMessage(msg);
							} catch (IOException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}	
						}	
					};
				}.start();
				
			}catch (IOException e) {
				e.printStackTrace();
			}
		}
		if(v==btnSend){
			try {
				OutputStream out=socket.getOutputStream();
				PrintStream ps=new PrintStream(out);
				String str=edtMessage.getText().toString();
				Log.i("str", ""+str);
				ps.println(str);	
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

服務器端代碼:

package com.lovo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class TestService {
	/**
	 * 開啓服務器
	 */
	public void startServer(){
		try {
			ServerSocket server=new ServerSocket(4000);
			System.out.println("服務器啓動成功:");
			Socket socket=server.accept();
			System.out.println("用戶連接成功"+socket.getRemoteSocketAddress());
			send(socket);
			receive(socket);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 發送消息
	 * @param socket
	 */
	public void send(final Socket socket){
		new Thread(){
			@Override
			public void run() {
				while(true){
					try {
						OutputStream os=socket.getOutputStream();
						PrintStream ps=new PrintStream(os);
						Scanner sc=new Scanner(System.in);
						//用戶輸入
						System.out.println("服務器說:");
						String str=sc.nextLine();
						ps.print(str.trim()+"\n");
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}.start();
	}
	/**
	 * 接收消息
	 * @param socket
	 */
	public void receive (final Socket socket){
		new Thread(){
			public void run(){
				while(true){
					try {
						InputStream is=socket.getInputStream();
						BufferedReader br=new BufferedReader(new InputStreamReader(is));
						String str=br.readLine();
						System.out.println("客戶段說:"+str);
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}.start();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		TestService  service=new TestService();
		service.startServer();
	}

}


發佈了36 篇原創文章 · 獲贊 27 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章