android客户端与c#服务器端的通信
2014-04-29 10:39
218 查看
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.建立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();
}
相关文章推荐
- [AIR接入Android 平台]处理res资源之文字国际化
- GitHub上最火的74个Android开源项目
- Android Volley完全解析(三),定制自己的Request
- android 全屏且不失去主题
- Android Volley完全解析(二),使用Volley加载网络图片
- android 学习--Dalvik虚拟机与Java虚拟机
- Android Volley完全解析(一),初识Volley的基本用法
- android四大组件--ContentProvider详解
- Android有用处理代码集锦-----图片相关
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
- android之GSON解析
- Android 实现打电话功能demo
- Android Popupwindow 拖动
- android 获取View的坐标
- android设置默认浏览器
- Android数据存储--SQLite Databases(数据库存储)待写
- Android之PULL解析XML
- 第十四天 乐在其中-Android与远端之GET方式
- Android之Fragment用法
- Android数据存储--Shared Preferences(共享首选项)待写