这是一个android端操控服务器的例子  就是发送简单指令到服务器  然后服务器响应什么的...

当然这里是未完成的  只是简单展示一下大致思路

首先连接建立起来后  服务端给客户端一条信息  告诉服务已经建立  然后客户端可以发送指令到服务端

服务端在将处理的结果返回给客户端   没有使用到线程  因此必须是 客户端一句话 服务端一句话 这样交替进行

服务端

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets; namespace SocketOne
{
class MyServer
{
static void Main(string[] args)
{
try
{
int port = ;
string host = "127.0.0.1";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
s.Bind(ipe);//绑定8081端口
s.Listen();//开始监听
Console.WriteLine("Wait for connect");
Socket temp = s.Accept();//为新建连接创建新的Socket。
Console.WriteLine("Get a connect");
string recvStr = "";
string sendStr = ""; //接收传送信息的时候都是发送的byte数组
//首先向客户端发送信息
sendStr = "Connection set up";
//与java通信 后面加个\n 因为我的java用的是readline
byte[] bs = Encoding.ASCII.GetBytes(sendStr + "\n");
temp.Send(bs, bs.Length, );//返回客户端成功信息
int count = ; MyResponse myresponse=new MyResponse();
while (true)
{
Console.WriteLine("a loop starts count="+ (count++) +"==================");
//接收信息
int bytes;
byte[] recvBytes = new byte[];
bytes = temp.Receive(recvBytes, recvBytes.Length, );//从客户端接受信息
recvStr = Encoding.ASCII.GetString(recvBytes, , bytes);//
Console.WriteLine("Server Get Message:{0}", recvStr);//把客户端传来的信息显示出来 //经过我的处理后将信息返回给客户端
sendStr = myresponse.myresponse(recvStr);
Console.WriteLine("response is " + sendStr);
bs = Encoding.ASCII.GetBytes(sendStr + "\n");
temp.Send(bs, bs.Length, );//返回客户端成功信息
Console.WriteLine("this loop end"); }
//temp.Close();
//s.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("Press Enter to Exit");
Console.ReadLine();
}
}
}

android客户端(仅仅是说明一下概念和原理  所以东西不多 全部放在了 activity里面)

package mypackage.hello;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class Hello1Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initBtns();
connectToServer();
} Button btnAdd;
Button btnDel;
Button btnSearch; Socket socket;
BufferedReader in;
PrintWriter out;
String recvStr = null;
String sendStr = null; public void initBtns() {
btnAdd = (Button) findViewById(R.id.buttonAdd);
btnDel = (Button) findViewById(R.id.buttonDel);
btnSearch = (Button) findViewById(R.id.buttonSearch); btnAdd.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
System.out.println("add clicked");
sendStr = "add,xxx,xxx,xxx";
out.println(sendStr); recvStr = in.readLine();
System.out.println("response is " + recvStr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}); btnDel.setOnClickListener(new OnClickListener() { public void onClick(View v) {
try {
System.out.println("del clicked");
sendStr = "DEL,xxx";
out.println(sendStr); recvStr = in.readLine();
System.out.println("response is " + recvStr);
} catch (IOException e) {
e.printStackTrace();
}
}
}); btnSearch.setOnClickListener(new OnClickListener() { public void onClick(View v) {
try {
System.out.println("search clicked");
sendStr = "search,xxx";
out.println(sendStr); recvStr = in.readLine();
System.out.println("response is " + recvStr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}); } public void connectToServer() {
try {
// 同时 为了使程序拥有网络权限 在manifest中要有 <uses-permission
// android:name="android.permission.INTERNET" />
// 否则提示 permission denied
// 安卓模拟器将127.0.0.1默认为模拟器的本机地址 要得到计算机中真正的地址是 localhost/127.0.0.1 或者
// 10.0.0.2
socket = new Socket("10.0.2.2", 8081);
System.out.println("after socket");
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader line = new BufferedReader(new InputStreamReader(
System.in));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

最新文章

  1. Oracle Delete inner的方式,级联删除子表的数据方式。
  2. python 学习笔记6(数据库 sqlite)
  3. HDU 4949 Light(插头dp、位运算)
  4. Release时error c1083 无法打开包括文件
  5. Mysql-字段类型
  6. Castle 开发系列文章
  7. 全英文版时间格式化07/29/2010 4:14:01 PM
  8. javascript 事件委托 和jQuery事件绑定on、off 和one
  9. HTML5 新元素、HTML5 Canvas
  10. Exception sending context initialized event to listener instance of class
  11. 消息队列mq的原理及实现方法
  12. 剑指架构师系列-ftp服务器
  13. Spring Security 整合freemaker 实现简单登录和角色控制
  14. 初窥Java--1(下载JADK,搭建环境变量)
  15. Quartz.Net—MisFire
  16. 2.5 Apache Axis2 快速学习手册之JiBx 构建Web Service
  17. Unity --- MeshRenderer之网格合并
  18. 20181013xlVba计算优秀率及合格率
  19. 23种经典设计模式UML类图汇总
  20. Linux下开启计划任务日志

热门文章

  1. MyBatis使用Generator自动生成代码
  2. DataTable 修改列名 删除列 调整列顺序
  3. tigervnc*
  4. HTML5实现图片选择并预览
  5. decimal类型不能为空,自定义update更新null值的问题。
  6. 20141011C#面向对象基础
  7. sql server 2000 和 sql server 2005 数据库连接字符串区别
  8. hadoop 配置文件注意问题
  9. HTML与CSS绘制简单DIV布局
  10. 5.7.1.4 window对象