网络代理服务Agent,服务端.client 连接server 进行通信

原创 2015年07月08日 11:27:01

package com.example.agentserv;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;


public class AgentServ extends Service {


private static final String TAG = "AgentServ";
private static final int PORTNUMER = 60000; // port
Context context = AgentServ.this;
private acceptThread macceptThread; // thread
private receiveThread mreceiveThread;
private boolean stop = true;
Socket client = null;


@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}


@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.e(TAG, "oncreate server");
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.e(TAG, "AgentServ onStartCommand");


macceptThread = new acceptThread();
macceptThread.setPriority(Thread.MAX_PRIORITY);
macceptThread.start();


Log.e(TAG, "intent = " + intent + "startid-->" + startId);
return Service.START_NOT_STICKY; 


}


// 接收客户端
class acceptThread extends Thread {
public acceptThread() {
// TODO Auto-generated constructor stub
Log.e(TAG, "acceptThread");
}


@Override
public void run() {
// TODO Auto-generated method stub
try {
@SuppressWarnings("resource")
ServerSocket serversocket = new ServerSocket(PORTNUMER);
Log.e(TAG, "wait client--- ");
// while (true) {
client = serversocket.accept();
Log.e(TAG,
"client-->" + client.getPort() + "     client-->"
+ client.getInetAddress() + "   是否连接 成功-->"
+ client.isConnected());


Log.v(TAG, "client-->" + client.getInetAddress());
// send message to client
// String msg = Transla(client);


mreceiveThread = new receiveThread(client);
stop = false;
mreceiveThread.start();
// }


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}


// 接收数据
class receiveThread extends Thread {
private InputStream mInputStream = null;
private byte[] buf;
private String str = null;
private Socket socket = null;
BufferedReader bReader = null;


public receiveThread(Socket socket) {
// TODO Auto-generated constructor stub
this.socket = socket;
try {
Log.e(TAG, "receiveThread start ");
// 获得输入流
this.mInputStream = client.getInputStream();
this.bReader = new BufferedReader(new InputStreamReader(
mInputStream));
Log.e(TAG, "go  here ");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


@Override
public void run() {
// TODO Auto-generated method stub
int n = 100;


while (!stop) {
this.buf = new byte[512];
// 读取输入的数据(阻塞读)
try {
this.mInputStream.read(buf);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 字符编码转换
try {
this.str = new String(this.buf, "GB2312").trim();
Log.v(TAG, "receive  data " + str);
n = Integer.parseInt(str);
switch (n) {
case 1:
getCpuInfo();
break;
case 2:
Ack("get data is  2");
Log.e(TAG, "please input  right number ");
break ;
default:
Log.e(TAG, "please input  right number ");
break;
}


} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}
}


public void getCpuInfo() {
// TODO Auto-generated method stub
Log.v(TAG, "send msg--> " + new CpuSum().getVersion()[0]);
// displayToast(new CpuSum().getVersion()[0]);
Ack(new CpuSum().getVersion()[0]);
}


public void Ack(String string) {
// TODO Auto-generated method stub
String outString = string;
try {
OutputStream output = client.getOutputStream();
output.write(outString.getBytes("gbk"));
Log.v(TAG, string);
output.flush();


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}






}
版权声明:本文为博主原创文章,未经博主允许不得转载。

java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)

====================================================== 注:本文源代码点此下载 =============================...

java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)

From:http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html 代码: http://files.cnblogs...

SQLServer 2000 Agent 代理服务不能启动的解决办法

1、首先检查SQL Server 服务是否启动:     1) 在服务器上使用企业管理器或服务管理器来查看 SQL Server 服务是否启动。如果该服务没有启动,则代理服务无法启动。  ...

黑马程序员--10.网络编程--06.【Clinet_Server通信原理】【TCP_客户端和服务端会话】【阻塞式方法的详解】

网络编程--6 C/S通信原理(Client/Server)  TCP客户端和服务端会话 ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------...

SQL SERVER 2005操作-代理服务

  • 2011年10月31日 08:52
  • 403KB
  • 下载

SQL Server2005 代理服务

  • 2010年06月01日 14:50
  • 399KB
  • 下载

用XMLRPC开服务进行server/client通信

本文讲一下如何用python的xmlrpc开服务,进行server/client的通信。 应用场景:1)需多client访问应用程序给予应答情况——网页服务; 2)数据极大,希望加载一次,后面只用方...

sql server express版本不能启动代理服务的另类解决办法

真是“”活到老,学到老“”,最近又在用MS SQL做数据库开发了,因为我用的是笔记本仅能安装EXPRESS版本的MS SQL 2008 R2。有意思的是这个版本的代理服务根本就不能启动,想了各种办法。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络代理服务Agent,服务端.client 连接server 进行通信
举报原因:
原因补充:

(最多只允许输入30个字)