Android Client 与 C# Server 的Socket通信

转于:http://www.189works.com/article-44079-1.html

今天在写一个Socket应用,需求是C#的服务端,Andorid的客户端。流程如下:

 

C# Socket Server

 

1.建立C# SocketServer

 

       

 1  private  void ServerStart()
 2          {
 3               // 创建IPEndPoint
 4               IPEndPoint ipep =  new IPEndPoint(IPAddress.Parse( " 127.0.0.1 "),  1234);
 5               // 创建Socket实例
 6               server_Socket =  new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 7               // 绑定Socket与IPEndPoint
 8               server_Socket.Bind(ipep);
 9               // 设置Socket收听模式
10               server_Socket.Listen( 10);
11  
12              while ( true)
13              {
14                   try
15                  {
16                       // 接受Andorid信息
17                       client_Socket = server_Socket.Accept();
18                      client_Thread =  new Thread( new ThreadStart(Receive AndroidData));
19                      client_Thread.Start();
20                  }
21                   catch (Exception ex)
22                  {
23                      MessageBox.Show( " start error:  " + ex.Message);
24                  }
25               
26             }
27          }

 

 

2.开启一个Theard,执行

       

1 server_Thread =  new Thread( new ThreadStart(ServerStart));
2          server_Thread.Start();

 

 

3.介绍方法

 

       

private  void ReceiveAndroidData()
         {
              bool keepalive =  true;
             Socket socketclient = client_Socket;
             Byte[] buffer =  new Byte[ 1024];
 
             // 根据收听到的客户端套接字向客户端发送信息
             IPEndPoint clientep = (IPEndPoint)socketclient.RemoteEndPoint;
             lstServer.Items.Add( " Andorid Client: " + clientep.Address +  " "+clientep.Port);
              string str =  " connect server-----  ";
              byte[] data =  new  byte[ 1024];
             data = Encoding.ASCII.GetBytes(str);
             socketclient.Send(data, data.Length, SocketFlags.None);
 
             while (keepalive)
             {
                  // 在套接字上接收客户端发送的信息
                  int buffer_lenght =  0;
                  try
                 {
                     buffer_lenght = socketclient.Available;
 
                    socketclient.Receive(buffer,  0, buffer_lenght, SocketFlags.None);
                      if (buffer_lenght ==  0)
                          continue;
                 }
                  catch (Exception ex)
                 {
                     MessageBox.Show( " receive error: " + ex.Message);
                      return;
                 }
                 clientep = (IPEndPoint)socketclient.RemoteEndPoint;
                  string strAndroid_CMD = System.Text.Encoding.ASCII.GetString(buffer).Substring( 0, buffer_lenght);
 
                  // 对根据strAndroid_CMD到数据库中查询值
                 
 

 

 

Android Client:

1. OnCreate方法中执行

 

 

try {
   Socket socket =  new Socket("10.0.2.2", 1234);

    
   PrintWriter out =  new PrintWriter( new BufferedWriter(
      new OutputStreamWriter(socket.getOutputStream())),  true);
   out.println(cameraid);
  }  catch (UnknownHostException e) {
    //  TODO Auto-generated catch block
   e.printStackTrace();
  }  catch (IOException e) {
    //  TODO Auto-generated catch block
   e.printStackTrace();
  }

 

代码很就简单

==================================

需要注意的是:

1.添加internet访问权限:。

2.127.0.0.1 IP被模拟器占用了,而本身PC的IP为10.0.2.2,如果本机测试的时候需要注意这一点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值