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