网络代理服务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();
}
}






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

ESFramework介绍之(7)-- 服务器代理IServerAgent

    (本文原作于2006.03.15,第一次修正于2006.06.06,修正后适用于ESFramework V0.3+)    (本文是ESFramework对客户端开发的支持特性之一 ,如...
  • zhuweisky
  • zhuweisky
  • 2006年03月15日 16:59
  • 602

Netty4.0学习笔记系列之一:Server与Client的通讯

本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯机制进行验证。 Server与Client建立连接后,会执行以下的步骤: 1、Client向Server发送消息:...
  • u013252773
  • u013252773
  • 2014年03月11日 23:18
  • 27114

Sql Server Agent 服务 无法启动(2008 Express 版)

查了很多资料,最后得出结论, 真的不支持, 原因不明 参照:1. http://topic.csdn.net/u/20100401/19/19233ccc-8f6e-480f-bde5-3758898...
  • cosair
  • cosair
  • 2010年09月16日 13:36
  • 3102

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

1、首先检查SQL Server 服务是否启动:     1) 在服务器上使用企业管理器或服务管理器来查看 SQL Server 服务是否启动。如果该服务没有启动,则代理服务无法启动。  ...
  • zhaoyonghui100
  • zhaoyonghui100
  • 2013年05月17日 15:13
  • 4839

VTP配置服务器server和客户端client,客户端会学习服务器端的VLAN

这种标题,看到就方了,什么是VTP,trunk、channel这些配置过相关的命令,但是我不理解啊,这样还能搭小型局域网络? 本来是要求用dns3、或者eve做的实验的,因为这两款模拟器可以模拟真机,...
  • Share_Li
  • Share_Li
  • 2017年10月21日 17:35
  • 88

【Consul】Consul实践指导-Agent

ConsulAgent是Consul的核心进程,Agent的工作是维护成员关系信息、注册服务、健康检查、响应查询等等。Consul集群的每一个节点都必须运行agent进程。...
  • iamonlyme
  • iamonlyme
  • 2016年08月19日 23:51
  • 2889

Android Socket进程通信——Client与Server之间的通信机制

Socket百度百科:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一...
  • zibuyuyeye
  • zibuyuyeye
  • 2015年10月10日 16:17
  • 1438

因 View Agent 和连接服务器之间不存在网络通信导致自定义错误

求助: VIEW 最新版本,建立 连接克隆 池后,虚拟机一直不停的报错,开上一会就自动重置,重启。。一直反复,模版机上的代理我重新安装了,重新建池。。不行。 有朋友遇到过相同问题吗? dns问...
  • yxwmzouzou
  • yxwmzouzou
  • 2015年02月04日 20:33
  • 2780

网络编程学习总结(之client/server模型)

一、什么是client/server模型        client/server翻译过来是客户端/服务器的意思,该模型最基础的表现方式是客户端连接上服务器后向服务器发送相应请求由服务器处理完成后做...
  • Jung_zhang
  • Jung_zhang
  • 2015年08月08日 21:22
  • 1402

【Little_things】简单的Client/Server通信小程序(java socket)

一个简单的每人交替输一句的实时刷新的Client/Server聊天程序, 主要用Socket和ServerSocket   Server代码 import java.io.*; import...
  • A__yes
  • A__yes
  • 2015年10月31日 21:57
  • 881
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络代理服务Agent,服务端.client 连接server 进行通信
举报原因:
原因补充:

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