支持国产操作系统国产应用!

捉蛋网

当前位置: 捉蛋网>教程>Android开发>

packet.getLength()); 2.TCP通信 【客户端】 创建一Socket对象并指明服务器端的IP及端口号

时间:2013-12-08 23:52来源:网络整理 作者: 点击:
Socket 通信 1.UDP实现 (DatagramSocket)【客户端】//首先创建一个DatagramSocket对象DatagramSocket socket = new DatagramSocket(4567);//创建一个InetAddre

> 移动开发 > Android > 正文 android Socket 编程 2012-07-16 17:12:19              我要投稿

Socket 通信
            1.UDP实现  (DatagramSocket)
【客户端】
//首先创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket(4567);
//创建一个InetAddress
InetAddress serverAddress = InetAddress.getByName("192.168.1.104");
String str = "hello";  //这是要传输的数据
byte data [] = str.getBytes();  //把传输内容分解成字节
//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号
DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
//调用socket对象的send方法,发送数据
socket.send(packet);

【服务器端】
//创建一个DatagramSocket对象,并指定监听的端口号
                DatagramSocket socket = new DatagramSocket(4567);
                byte data [] = new byte[1024];
                //创建一个空的DatagramPacket对象
                DatagramPacket packet = new DatagramPacket(data,data.length);
                //使用receive方法接收客户端所发送的数据,
                //如果客户端没有发送数据,该进程就停滞在这里
                socket.receive(packet);
                String result = new String(packet.getData(),packet.getOffset(),packet.getLength());

2.TCP通信
【客户端】
创建一Socket对象并指明服务器端的IP及端口号
Socket socket = new Socket("192.168.1.0",45678);
//向服务器发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
out.println(message);
//从服务器接收消息
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String rString = is.readLine().toString();

【服务器端】
//创建一个ServerSocket对象,并让这个Socket在45678端口监听
serverSocket = new ServerSocket(45678);
//调用ServerSocket的accept()方法,安卓,接受客户端所发送的请求,
//如果客户端没有发送数据,那么该线程就停滞不继续
                Socket socket = serverSocket.accept();
                //从Socket当中得到InputStream对象
                InputStream inputStream = socket.getInputStream();
                byte buffer [] = new byte[1024*4];
                int temp = 0;
                //从InputStream当中读取客户端所发送的数据
                while((temp = inputStream.read(buffer)) != -1)
{
                   String str = new String(buffer,0,temp);
  //接下来可以对从客户端接收到的消息做处理
               }
 

【Socket获取客户端IP地址及端口号】
   Socket类包含一些非常有用的属性,这些属性允许确定关于正在连接的客户端的信息。其中关键信息之一
   是返回EndPoint对象的RemoteEndPoint属性。EndPoint类本身是抽象的,要想收集有用的信息,需·要把
   EndPoint强制类型转换为IPEndPoint对象。IPEndPoint类包含远程客户端的IP地址和端口号。具体用法如下:
   TcpListener tcpl=new TcpListener(port);
   Socket s=tcpl.AcceptSocket();
   label1.text=((IPEndPoint)s.RemoteEndPoint).Address.ToString();
   label2.text=((IPEndPoint)s.RemoteEndPoint).Port.ToString();

 

作者:zjbpku 点击复制链接 与好友分享!回本站首页 您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力   上一篇:Android构建音频播放器教程(二) 下一篇:Android中Widget的开发详解 相关文章

android C编程技巧 及 C/C++开发测试

Java程序移植到android上问题解决小结

Android入门第一篇

Android入门第二篇之LinearLayout、Ab

Android入门第三篇之RelativeLayout、

Android入门第四篇之TableLayout (一)

Android入门第五篇之TableLayout (二)

Android入门第六篇之ListView (一)

Android入门第七篇之ListView (二)

Android入门第八篇之GridView(九宫图)

图文推荐

(责任编辑:捉蛋网-刷机)
............................................................................................... ...............................................................................................

 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------