【源碼】c#編寫的安卓客戶端與Windows服務器程序進行網絡通訊

源碼(包含客戶端與服務器端全部工程文件)    數據庫文件      sql

爲了方便測試,我臨時搭建了一個服務器能夠安裝apk文件,直接測試  apk文件下載地址  數據庫

通訊框架爲來自英國的NetworkComms2.3.1開源通訊框架    序列化採用Protobuf.net開源框架c#

客戶端界面以下:服務器

      

服務器端程序界面:
框架

服務器搭建在winserver2003 上,基於.net4.0.測試

數據庫採用sql2005this

輸入數據:加密

數據庫建設完成,打開VS2010開始,建立相關的工程spa

建立服務器端工程.net

 

下一步:打開CodeSmith建立「存儲過程」,「數據層」代碼,「邏輯層(Business層代碼)」:  

相關CodeSmith模板下載地址:

使用的CodeSmith爲6.5版本:

生成完成後,VS中工程圖:

下一步先構建服務器代碼 

 數據庫中添加存儲過程

DBUsers.CS中添加:

 //添加 根據UserID獲取用戶
        public static IDataReader GetOneByUserName(           string name)
        {
            SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectOneByUserName", 1);
            sph.DefineSqlParameter("@Name", SqlDbType.NVarChar, 200, ParameterDirection.Input, name);            return sph.ExecuteReader();

        }

邏輯層DoUsers中添加:

public static string Login(string username, string password)
        { 
            using (IDataReader reader = DBUsers.GetOneByUserName(username))
            {                string theResult = "登陸不成功";
                Users theUser = PopulateFromReader(reader);                if (theUser == null)
                {
                    theResult = "用戶不存在";
                }                else if (theUser.PassWord == password)
                { 
                    theResult = "登陸成功";
                     
                }                else
                {
                    theResult = "密碼不正確";
                  
                }                return theResult;
            }


        }

 服務器端代碼:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms; 
using NetworkCommsDotNet; 
using System.Net;using Mobile.Business;using Mobile.Entity;namespace MobileServer
{    public partial class Form1 : Form
    {        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        { 
            //服務器開始監聽客戶端的請求 
            //開始監聽某T端口
            IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text));
            TCPConnection.StartListening(thePoint, false);
            button1.Text = "監聽中";
            button1.Enabled = false;            //此方法中包含服務器具體的處理方法。            StartListening();
        }        private void StartListening()
        {            
            //禁用日誌記錄  服務器端正式使用時,禁用日誌記錄            NetworkComms.DisableLogging();             
            //處理登錄請求
            NetworkComms.AppendGlobalIncomingPacketHandler<Users>("UserLogin", IncomingLoginRequest);

        }        //處理某個具體的請求
        private void IncomingLoginRequest(PacketHeader header, Connection connection, Users currentUser)
        {            try
            {                //從數據庫中獲取返回結果
                string resMsg  = DoUsers.Login(currentUser.Name,currentUser.PassWord);

                ResMessage contract = new ResMessage();
                contract.Message = resMsg;                //把結果返回給客戶端
                connection.SendObject("ResLogin", contract);

            }            catch (Exception ex)
            {

            }
        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            NetworkComms.Shutdown();            this.Dispose();            this.Close();
        }
    }
}

至此,咱們已經完成了「建設數據庫」,「建表」,「生成數據庫存儲過程「,」數據層代碼「,」邏輯層代碼「,」服務器端代碼的編寫「。只剩下安卓客戶端的編寫了。

 還有一點是安卓客戶端的加密保護,在此分享推薦我經常使用的加密技術——愛加密安卓應用加密技術,絕對是專業的安卓應用加密保護平臺!

藉助xamarin平臺,用C#語言開發安卓程序,最大的優點,我的感受是能夠使用.net平臺上衆多優秀的庫類,特別是經過穩定成熟的通訊框架與c#服務器端進行交互。

 

 

修改 Main.axml文件,增長几個文本框給用戶輸入用戶名和密碼:

 修改Main.axml文件

 MainActivity代碼

相關文章
相關標籤/搜索