Подключение WIFI к WIFI с помощью Android

Я хочу передать сообщения с устройства Android на настольное приложение. Мой вопрос в том, что я могу подключить Android-устройство Android с помощью настольного WiFi-устройства без какого-либо использования интернет-соединения. Я хочу использовать его так же, как Bluetooth. Это возможно или нет? Если это возможно, то как я могу его реализовать?

Спасибо и с уважением Амит Тэпер

Вот реализация предложения Мрейхельта. Я посмотрел на это, когда у меня была такая же проблема, и подумал, что просто опубликую мою реализацию решения. Это очень просто. Я также создал java-сервер, который прослушивает входящие запросы с устройства Android (в основном для отладки). Вот код для отправки материала по беспроводной сети:

import java.net.*; import java.io.*; import java.util.*; import android.app.Activity; import android.content.Context; import android.content.ContentValues; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.util.Log; public class SMSConnection { /* The socket to the server */ private Socket connection; /* Streams for reading and writing the socket */ private BufferedReader fromServer; private DataOutputStream toServer; /* application context */ Context mCtx; private static final String CRLF = "\r\n"; /* Create an SMSConnection object. Create the socket and the associated streams. Initialize SMS connection. */ public SMSConnection(Context ctx) throws IOException { mCtx=ctx; this.open(); /* may anticipate problems with readers being initialized before connection is opened? */ fromServer = new BufferedReader(new InputStreamReader(connection.getInputStream())); toServer = new DataOutputStream(connection.getOutputStream()); } public boolean open(String host, int port) { try { connection = new Socket(host, port); return true; } catch(IOException e) { Log.v("smswifi", "cannot open connection: " + e.toString()); } return false; } /* Close the connection. */ public void close() { try { connection.close(); } catch (IOException e) { Log.v("smswifi","Unable to close connection: " + e.toString()); } } /* Send an SMS command to the server. Check that the reply code is what is is supposed to be according to RFC 821. */ public void sendCommand(String command) throws IOException { /* Write command to server. */ this.toServer.writeBytes(command+this.CRLF); /* read reply */ String reply = this.fromServer.readLine(); } } 

Это базовый скелет для класса соединения. Вы просто создаете экземпляр класса и вызываете открытый экземпляр, который вы создаете с хостом и портом (не забудьте закрыть соединение, когда закончите), и вы можете изменить тело sendCommand по своему вкусу. В качестве примера я включил операцию чтения / записи в тело функции.

Вот код для запуска сервера на удаленном компьютере, который прослушивает подключения и порождает поток для обработки каждого запроса. Он может легко взаимодействовать с вышеуказанным кодом для отладки (или любого использования).

 import java.io.*; import java.net.*; import java.util.*; public final class smsd { ///////MEMBER VARIABLES ServerSocket server=null; Socket client=null; ///////MEMBER FUNCTIONS public boolean createSocket(int port) { try{ server = new ServerSocket(port); } catch (IOException e) { System.out.println("Could not listen on port "+port); System.exit(-1); } return true; } public boolean listenSocket(){ try{ client = server.accept(); } catch (IOException e) { System.out.println("Accept failed: "); System.exit(-1); } return true; } public static void main(String argv[]) throws Exception { // smsd mySock=new smsd(); //establish the listen socket mySock.createSocket(3005); while(true) { if(mySock.listenSocket()) { //make new thread // Construct an object to process the SMS request message. SMSRequest request = new SMSRequest(mySock.client); // Create a new thread to process the request. Thread thread = new Thread(request); // Start the thread. thread.start(); } } //process SMS service requests in an infinite loop } ///////////end class smsd///////// } final class SMSRequest implements Runnable { // final static String CRLF = "\r\n"; Socket socket; // Constructor public SMSRequest(Socket socket) throws Exception { this.socket = socket; } // Implement the run() method of the Runnable interface. public void run() { try { processRequest(); } catch (Exception e) { System.out.println(e); } } private static void sendBytes(FileInputStream fis, OutputStream os) throws Exception { // Construct a 1K buffer to hold bytes on their way to the socket. byte[] buffer = new byte[1024]; int bytes = 0; // Copy requested file into the socket's output stream. while((bytes = fis.read(buffer)) != -1 ) { os.write(buffer, 0, bytes); } } private void processRequest() throws Exception { // Get a reference to the socket's input and output streams. InputStream is = this.socket.getInputStream(); DataOutputStream os = new DataOutputStream(this.socket.getOutputStream()); // Set up input stream filters. InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); // Get the request line of the SMS request message. String requestLine = br.readLine(); //print message to screen System.out.println(requestLine); //send a reply os.writeBytes("200"); // Close streams and socket. os.close(); br.close(); socket.close(); } } 

nb4namingconventions.

почти забыл. Вам нужно будет установить эти разрешения внутри тегов в вашем AndroidManifest.xml, чтобы использовать беспроводную связь.

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

Это легко возможно, если оба устройства используют одну и ту же сеть Wi-Fi и могут пинговать друг друга. Вы можете просто создать приложение Java на своем рабочем столе, которое создает ServerSocket . Затем вы можете открыть Socket в Android-приложении, используя IP-адрес рабочего стола и отправить данные через OutputStream .

Я считаю, что Amit ссылается на то, что машины соединяются напрямую друг с другом с помощью беспроводной связи.

В настоящее время существует спецификация Wifi-direct, позволяющая настраивать точки доступа в режиме Plug-in-Play. В настоящее время проблема заключается в обеспечении того, чтобы одна из машин была AP, к которой может подключиться другая машина (ы).

Меня интересует, как это относится к сетям Ad-Hoc. У меня нет решения, но меня тоже интересует этот вопрос! (Предположим, что это ваш вопрос Amit).

Intereting Posts
Настройка приоритета WiFi на Android Lollipop или позже через интерфейс настроек Admob can not find transfer funds link в google admob panel Android поворачивает изображения на 90 градусов (снимается камерой) FEN (нотация шахмат) для HTML-генератора? Java с открытым исходным кодом Возможно ли установить Eclipse IDE в Galaxy Tab? Почему в Android есть ListView? Событие завершения прокрутки Viewpager Можно отображать миниатюру видео с URL-адреса на Android 4 и выше? Новая версия Android Gradle Build System создает конфликты с именами пакетов с полномочиями поставщика Функция VideoView seekto () чрезвычайно непоследовательная Не удается открыть расширение пользовательского файла Путаница на «позиции» в функции instantiateItem в классе PagerAdapter (android) Открытие защищенного PDF-документа PDF и рендеринга в android с использованием нового класса «PdfRenderer»? MATCH_PARENT, если вид на сестры больше, WRAP_CONTENT, если вид сестры меньше Как изменить файл strings.xml во время выполнения