android Socket 编程

本文介绍了如何在Android平台上进行Socket通信,包括连接服务器、获取远程端口等关键步骤,为Android应用开发中的网络交互提供基础。
摘要由CSDN通过智能技术生成

【转载请注明出处:http://blog.csdn.net/zjbpku/article/details/7752072


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();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值