Android Socket通信详解

2019-12-10 19:42:14于丽

3.2基于UDP协议的数据传输

服务器端首先创建一个DatagramSocket对象,并且指点监听的端口。接下来创建一个空的DatagramSocket对象用于接收数据(bytedata[]=newbyte[1024;]DatagramSocketpacket=newDatagramSocket(data,data.length)),使用DatagramSocket的receive方法接收客户端发送的数据,receive()与serversocket的accepet()类似,在没有数据进行接收的处于堵塞状态。

客户端也创建个DatagramSocket对象,并且指点监听的端口。接下来创建一个InetAddress对象,这个对象类似与一个网络的发送地址(InetAddressserveraddress=InetAddress.getByName("172.168.1.120")).定义要发送的一个字符串,创建一个DatagramPacket对象,并制定要讲这个数据报包发送到网络的那个地址以及端口号,最后使用DatagramSocket的对象的send()发送数据。*(Stringstr="hello";bytedata[]=str.getByte();DatagramPacketpacket=new DatagramPacket(data,data.length,serveraddress,4567);socket.send(packet);)

四、android 实现socket简单通信

前言:添加权限

 <!--允许应用程序改变网络状态-->    
 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>        
 <!--允许应用程序改变WIFI连接状态-->    
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>        
 <!--允许应用程序访问有关的网络信息-->    
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>        
 <!--允许应用程序访问WIFI网卡的网络信息-->    
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>        
 <!--允许应用程序完全使用网络-->    
 <uses-permission android:name="android.permission.INTERNET"/>    

4.1使用TCP协议通信

android端实现:

 protected void connectServerWithTCPSocket() {  
    Socket socket; 
    try {// 创建一个Socket对象,并指定服务端的IP及端口号 
      socket = new Socket("...", ); 
       // 创建一个InputStream用户读取要发送的文件。 
       InputStream inputStream = new FileInputStream("e://a.txt"); 
       // 获取Socket的OutputStream对象用于发送数据。 
       OutputStream outputStream = socket.getOutputStream(); 
       // 创建一个byte类型的buffer字节数组,用于存放读取的本地文件 
       byte buffer[] = new byte[ * ]; 
       int temp = ; 
       // 循环读取文件 
       while ((temp = inputStream.read(buffer)) != -) { 
         // 把数据写入到OuputStream对象中 
         outputStream.write(buffer, , temp); 
       } 
       // 发送读取的数据到服务端 
       outputStream.flush(); 
  
       /** 或创建一个报文,使用BufferedWriter写入,看你的需求 **/ 
 //     String socketData = "[;fjks;]"; 
 //     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( 
 //         socket.getOutputStream())); 
 //     writer.write(socketData.replace("n", " ") + "n"); 
 //     writer.flush(); 
       /************************************************/ 
     } catch (UnknownHostException e) { 
       e.printStackTrace(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 
  
   }