zoukankan      html  css  js  c++  java
  • Android Client 与 C# Server 的Socket通信

    -

    今天在写一个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(ReceiveAndroidData));
    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访问权限:<uses-permission android:name="android.permission.INTERNET" />。

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

  • 相关阅读:
    Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)
    弹窗插件zDialog使用教程
    shiro+spring相关配置
    jQuery分页插件(jquery.page.js)的使用
    ueditor1.4.3配置过程(包含单独上传文件以及图片的使用),ueditor1.4.3上传配置(转 http://www.bkjia.com/webzh/1001016.html)
    ueditor1_4_3_3编辑器修改文章
    jquery获取当前select下拉选的属性值
    js点击标签时获取当前标签属性值
    mysql给root开启远程访问权限,修改root密码
    redis持久化配置
  • 原文地址:https://www.cnblogs.com/Enno/p/2363428.html
Copyright © 2011-2022 走看看