Android与C#的socket通讯

  物联网学习过程中遇到了需要PC端与Android端使用TCP协议进行通讯的问题,记录下来以便今后复习。

  这里我PC端服务器使用的是C#编写的代码:

int port = 2000;//端口号
string host = "192.168.1.100";//服务器IP地址,
IPAddress ip = IPAddress.Parse(host); 
IPEndPoint ipe = new IPEndPoint(ip, port); 
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
//建立一个socket对象
//第一个参数指定地址族,枚举常用的有:AddressFamily.InterNetwork—IPV4地址,AddressFamily.InterNetworkV6—IPV6地址
//第二个参数指定Socket的类型,常用枚举有:SocketType.Stream表明是基于面向连接的流套接字,SocketType.Dgram表示是基于无连接的数据报套接字
//第三个参数指定Socket使用的协议,常用枚举有:ProtocolType.TCP—TCP协议,ProtocolType.UDP—UDP协议
s.Bind(ipe); //用socket对像的Bind()方法绑定EndPoint
s.Listen(0);//用socket对像的Listen()方法开始监听,入参为int类型,等待客户端发出连接的请求,参数是指用户的连接数。超过拒绝通讯
Socket temp = s.Accept();//接受到客户端的连接,用socket对像的Accept()方法创建新的socket对像用于和请求的客户端进行通信
string recvStr = "";//
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0); 
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);//从客户端接收信息
s.Close(); //通讯结束后关闭Socket

 

  接下来是Android端客户机代码,Android端的代码比较简单,就不详解了

Socket socket = new Socket(ip,8888);//绑定端口
OutputStream out = socket.getOutputStream();//定义输出流
out.write(info.getBytes());//写数据
out.flush();
socket.close();//关闭流

   需要注意的是4.0以后网络访问需要在子线程中完成,且不要忘了在AdroidManifest文件下添加网络访问权限

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。