Android Client 与 C# Server 的Socket通信

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,如果本机测试的时候需要注意这一点。

时间: 2024-12-19 06:08:29

Android Client 与 C# Server 的Socket通信的相关文章

Android Client and Jsp Server

1. Interestfriend Server https://github.com/eltld/Interestfriend_server https://github.com/774663576/Interestfriend_server https://github.com/eltld/quyou_web Client https://github.com/774663576/Interestfriend https://github.com/eltld/Interestfriend 2

Android Client and PHP Server

1 FEApplication https://github.com/eltld/FEApplication https://github.com/eltld/FE-web https://github.com/eltld/FEMobile https://github.com/eltld/FEMobile2 2. https://github.com/eltld/siscoe-mobile https://github.com/eltld/siscoe-web-android

2017年8月9日学习内容存放 #socket通信介绍

2017年8月9日学习内容存放 1 #socket通信介绍 2 3 ''' 4 OSI七层 5 6 应用 7 表示 8 会话 9 传输 10 网络 ip 11 数据链路 mac 12 物理层 网线 13 14 15 16 http 17 smtp 18 dns 19 ftp 20 ssh 21 snmp 22 icmp ping 23 dhcp 24 25 26 27 发 send 28 收 receive 29 30 31 32 33 TCP/IP 三次握手,四次断开 34 35 UDP 36

Android开发socket通信——手机做server端C/S架构实现

每一部智能手机都是一部微型电脑,在学校里最喜欢的就是找上十个八个同学一起局域网内开几局dota,突然想到,拿手机C一个游戏来玩怎样,不用连wifi.不用开数据,几部手机选一个做主机,其他手机连上它的热点,便可以互动起来游戏搞起来了,多开心~~ 实际实现过程中发现拿手机本身做server的手段还真是很少有人使用,网上也很少有现成的解决方案,经过一番摸索,简单实现了手机自身做server(可兼做客户端)的socket通信功能,写出来请大家指导一下,也是简单梳理一下方便日后复用. 遇到的最大问题可能是

JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开

Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料,都没有自己合适的,最后自己想了个办法,不过也相当于截取了心跳检测的一部分. 这里检测的是远程server的连接,而不是本地是否连接成功.首先想到socket类的方法isClosed().isConnected().isInputStreamShutdown().isOutputStreamShutd

java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)

原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html 代码: http://files.cnblogs.com/kenkofox/Client-CPlusPlus.rarhttp://files.cnblogs.com/kenkofox/Server_Java.rar java和C++使用Socket通信,其实底层Socket都是相通的,所以只需要按照各自的语法去做就是了. java服务器端使用ServerSo

从零开始学android -- 简易的socket通信

先来介绍下socket,网上摘抄点资料,免得自己打字了 网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 1.消息传递(管道.FIFO.消息队列) 2.同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 3.共享内存(匿名的和具名的) 4.远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但

基于Java的TCP Socket通信详解(计算机端/Android手机端)

TCP Socket通信是一种比较常用的基于连接的网络通信方式.本文通过Java实现TCP Socket通信,并将其用于计算机端.Android手机端,同时做到代码规范化,实现代码最大化复用. 本文代码可在GitHub下载,建议对照源码阅读文章 https://github.com/jzj1993/JavaTcpSocket TCP连接的建立 客户端和服务器间通过三次握手建立TCP连接.在Java中,连接建立完成后,服务器端和客户端分别获取到一个Socket实例,之后就可以通过这个Socket实

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信