Android Client 与 C# Server 的Socket通信
C# Socket Server
1.建立C# SocketServer
1privatevoidServerStart()
2{
3//创建IPEndPoint
4IPEndPointipep=newIPEndPoint(IPAddress.Parse("127.0.0.1"),1234);
5//创建Socket实例
6server_Socket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
7//绑定Socket与IPEndPoint
8server_Socket.Bind(ipep);
9//设置Socket收听模式
10server_Socket.Listen(10);
11
12while(true)
13{
14try
15{
16//接受Andorid信息
17client_Socket=server_Socket.Accept();
18client_Thread=newThread(newThreadStart(ReceiveAndroidData));
19client_Thread.Start();
20}
21catch(Exceptionex)
22{
23MessageBox.Show("starterror:"+ex.Message);
24}
25
26}
27}
2.开启一个Theard,执行
1server_Thread=newThread(newThreadStart(ServerStart));
2server_Thread.Start();
3.介绍方法
privatevoidReceiveAndroidData()
{
boolkeepalive=true;
Socketsocketclient=client_Socket;
Byte[]buffer=newByte[1024];
//根据收听到的客户端套接字向客户端发送信息
IPEndPointclientep=(IPEndPoint)socketclient.RemoteEndPoint;
lstServer.Items.Add("AndoridClient:"+clientep.Address+":"+clientep.Port);
stringstr="connectserver-----";
byte[]data=newbyte[1024];
data=Encoding.ASCII.GetBytes(str);
socketclient.Send(data,data.Length,SocketFlags.None);
while(keepalive)
{
//在套接字上接收客户端发送的信息
intbuffer_lenght=0;
try
{
buffer_lenght=socketclient.Available;
socketclient.Receive(buffer,0,buffer_lenght,SocketFlags.None);
if(buffer_lenght==0)
continue;
}
catch(Exceptionex)
{
MessageBox.Show("receiveerror:"+ex.Message);
return;
}
clientep=(IPEndPoint)socketclient.RemoteEndPoint;
stringstrAndroid_CMD=System.Text.Encoding.ASCII.GetString(buffer).Substring(0,buffer_lenght);
//对根据strAndroid_CMD到数据库中查询值
Android Client:
1. OnCreate方法中执行
try{
Socket socket =newSocket("10.0.2.2", 1234);
PrintWriter out =newPrintWriter(newBufferedWriter(
newOutputStreamWriter(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,如果本机测试的时候需要注意这一点。
更多相关文章
- Android 获取手机的厂商信息
- Android使用httpPost向服务器发送请求的方法
- 设置图片缩放方法失效 解决办法设置android:scaleType属性
- android 从SIM卡获取联系人信息
- Android分享到腾讯微博,信息,新浪微博等等,的实现方式
- android adb shell获取和设置IP相关信息
- XAMARIN Android获取WIFIMAC地址的方法
- 实时获取Android 各版本电量的统一方法