基于TCP实现Android移动设备与Windows计算机的连接_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 基于TCP实现Android移动设备与Windows计算机的连接

基于TCP实现Android移动设备与Windows计算机的连接

 2013/11/28 21:35:41  MSTK  博客园  我要评论(0)
  • 摘要:Java语言的通信有Socket(套接字)和HTTP两种方式,其中Socket(套接字)又分为TCP和UDP。TCP是面向连接的、可靠的通信方式,UDP是无连接的通信方式。TCP通信方式的服务端采用ServerSocket进行监听,客户端采用Socket发出连接请求。当ServerSocket收到连接请求时,调用accept()方法返回一个Socket和客户端的Socket建立连接并通信。本文采用TCP实现了Android移动设备和Windows计算机的连接,计算机作为服务器端监听
  • 标签:计算机 Windows android 实现 连接 设备

Java语言的通信有Socket(套接字)和HTTP两种方式,其中Socket(套接字)又分为TCP和UDP。TCP是面向连接的、可靠的通信方式,UDP是无连接的通信方式。

TCP通信方式的服务端采用ServerSocket进行监听,客户端采用Socket发出连接请求。当ServerSocket收到连接请求时,调用accept()方法返回一个Socket和客户端的Socket建立连接并通信。

本文采用TCP实现了Android移动设备和Windows计算机的连接,计算机作为服务器端监听,移动设备作为客户端,向计算机发出连接请求。

Windows端监听线程的代码如下:

class="brush:java;gutter:true;">import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;


public class tListen extends Thread{
	
	public static ServerSocket ssct_server;
	public static Socket sct_server;
	public static InetAddress ip_server;
	public static Integer pt_server;
	
	// 线程变量
	public static tReceive t_receive;
	
	// 本机IP和PORT
	public tListen(InetAddress ip, int port){
		
		this.ip_server = ip;
		this.pt_server = port;
		
	}
	
	public void run(){
		// 开始监听
		try
		{
			fMain.l_status.setText("状态:正在监听客户端......");
			ssct_server = new ServerSocket(pt_server,2,ip_server);
			sct_server = ssct_server.accept();
			fMain.l_status.setText("状态:已经连接上客户端!");
			fMain.set_btn(0, 1);
			// 启动接收线程
			t_receive = new tReceive(sct_server); 
			t_receive.start();
		}
		catch (Exception e0)
		{
			fMain.l_status.setText("错误:" + e0);
			if (ssct_server != null)
				try
				{
					ssct_server.close();
				}
				catch (Exception e1)
				{
					fMain.l_status.setText("错误:" + e1);
				}
		}		
	}

}

ssct_server = new ServerSocket(pt_server,2,ip_server)监听ip_server地址的pt_server端口,当收到客户端的连接请求时,sct_server = ssct_server.accept()接受连接请求,并返回一个socket和客户端通信。

Android端连接线程的代码如下:

package com.hzhi.mouse_mb;

import java.net.Socket;

import android.os.Bundle;
import android.os.Message;
import android.widget.Toast;

public class ConnectThread extends Thread{
	
	public static Socket socket_client;
	public static String ip_server;
	public static int port_server;
	
	// 消息变量
	private Message msg;
	private Bundle bdl;
	
	public ConnectThread(String ip, int pt){
		
		this.ip_server = ip;
		this.port_server = pt;
		
	}

	public void run(){
		
		try
		{
			socket_client = new Socket(ip_server, port_server);
			send_message(MainActivity.msg_con_stop, "");			
		}
		catch(Exception e)
		{
			 send_message(MainActivity.msg_error, e.getMessage());
		}
		
	}
	
	// 发送消息(用于更新UI)
	public void send_message(int x, String s){
		
		msg = new Message();
		bdl = new Bundle();	
		bdl.putString("1",s);
		msg.what = x;
		msg.setData(bdl);	
		MainActivity.main_handler.sendMessage(msg);
		
	}
	
}

socket_client = new Socket(ip_server, port_server)向地址为ip_server、端口为port_server的服务器发出连接请求,如连接成功,使用socket_client和服务器的Socket进行通信。

上一篇: 27个Java程序基本优化小提示 下一篇: 没有下一篇了!
发表评论
用户名: 匿名