wifi and socket and service

本文详细介绍了基于UDP协议的服务器与客户端之间的通信过程,包括如何创建DatagramSocket对象,如何发送和接收数据包,以及如何使用InetAddress和DatagramPacket进行地址和数据的指定与传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wifi 就是一种无线联网的技术,无线路由器。
wifi 网卡的状态需要常量表示:
1.WIFI_STATE_DISABLED:不可用
2.WIFI_STATE_DISABLING :正在被关闭
WifiManger wifiManger = (WifiManger)Context .getSystemSERVICE(service.WIFI_SERVICE)


socket

ServerSocket serverSocket = null;
try
{
 serverSocket = new ServerSocket();
 Socket  socket =  serverSocker.accept();
 InputStream inputstream  = socket.getInputStream();
 int temp = 0 ;
 byte buffer[] ]= new byte[];
System.out.println(new String(buffer,0 ,temp));
}


   //使用的是基于udp的通信方式服务器端
   //首先创建一个DatagramSocket对象
   DatagramSocket socket = new DatagramSocket(4567);
   //创建一个InetAddree
   InetAddress serverAddress = InetAddress.getByName("192.168.2.102");
   String str = "hello";
   byte data [] = str.getBytes();
   //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
   DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
   //调用socket对象的send方法,发送数据
   socket.send(packet);

   //基于udp的通信客户端
   //首先创建一个DatagramSocket对象
   DatagramSocket socket = new DatagramSocket(4567);
   //创建一个InetAddree
   InetAddress serverAddress = InetAddress.getByName("192.168.2.102");
   String str = "hello";
   byte data [] = str.getBytes();
   //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
   DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);
   //调用socket对象的send方法,发送数据
   socket.send(packet);


Service  A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.

 

### 实现基于WiFiAndroid聊天功能 为了实现在Android设备上通过WiFi实现聊天功能,开发者可以利用多种技术和库来构建稳定高效的通信机制。通常情况下,这种类型的聊天应用程序会涉及到网络编程以及多线程处理。 #### 使用Socket进行基本的客户端-服务器架构通讯 一种常见的做法是在后台运行的服务中建立一个`ServerSocket`监听特定端口等待连接请求,在另一台设备上的应用则作为客户端尝试与之建立TCP/IP连接。一旦建立了连接,则可以通过输入输出流来进行数据交换[^1]。 ```java // Server side code snippet to listen on a port and accept connections. new Thread(new Runnable() { @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(PORT_NUMBER); while (!Thread.currentThread().isInterrupted()) { Socket clientSocket = serverSocket.accept(); // Handle the connection... } } catch (IOException e) { Log.e(TAG, "Error accepting socket.", e); } } }).start(); // Client side code snippet to connect to the server. try { InetAddress serverAddress = InetAddress.getByName(SERVER_IP_ADDRESS); Socket socket = new Socket(serverAddress, PORT_NUMBER); } catch (UnknownHostException | IOException e) { Log.e(TAG, "Failed to establish connection with server.", e); } ``` #### 集成Wi-Fi Direct技术提升局域网内设备间交互体验 对于希望在同一无线网络下的两部或多部移动终端之间快速便捷地共享文件或消息的应用场景来说,Google提供了Wi-Fi Direct API支持直接P2P连接而无需经过路由器转发。这不仅简化了配置过程而且提高了传输效率[^3]。 ```xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <!-- Add these permissions in your AndroidManifest.xml --> ``` ```java // Initialize WiFi P2p Manager instance within Activity or Service lifecycle methods like onCreate(). manager.initialize(context, context.getMainLooper(), null); // Discover peers available over Wi-Fi Direct when user initiates discovery action. Intent intent = new Intent(WifiP2pManager.WIFI_P2P_DISCOVER_PEERS_ACTION); if (intent.getAction().equals(WifiP2pManager.WIFI_P2P_DISCOVER_PEERS_ACTION)) { manager.discoverPeers(channel, new WifiP2pManager.ActionListener() { @Override public void onSuccess() {} @Override public void onFailure(int reasonCode) {} }); } // Connect to selected peer after discovering them through above method call. WifiP2pConfig config = new WifiP2pConfig(); config.deviceAddress = device.deviceAddress; manager.connect(channel, config, new ActionListener() {...}); ``` #### 应用层协议设计考虑因素 当实现了底层的数据通道之后,还需要定义一套适合即时通讯特点的消息格式和序列化方式以便于解析发送方意图并作出相应回应。JSON是一种轻量级易于理解和使用的文本格式常被用来承载此类结构化的信息体[^5]。 ```json { "type": "message", "content": "Hello there!", "senderId": "userA" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值