服务器和客户端聊天通过wifi在android devices.ex三星Duos,银河

时间:2014-07-25 09:50:27

标签: java android

我是Android开发的新蜜蜂,我正在计划在两个或更多Android设备(如三星Duos或更高版本)之间的聊天应用,而不使用互联网。并且只使用WIFI。 1)有可能吗?  如果是,那么请建议一些代码段或链接,用于通过WiFi建立2个设备之间的连接,并在它们之间传输文本消息。

1 个答案:

答案 0 :(得分:0)

您必须使用聊天功能为两台设备创建相同的APP。

在AndroidManifest.xml中放置:

非常有用
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后在MainActivity类和其他传输数据的类中,放置它是必不可少的:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                                                .permitAll().build();
StrictMode.setThreadPolicy(policy);

这段代码使设备能够从连接在同一WiFi网络上的外部设备发送和接收数据。

好的,那么你将不得不创建套接字。套接字允许您从特定的IP和端口发送和接收数据。 你有一个非常简单的例子:

Socket client = new Socket("1.2.3.4", 2000); // This will connect to the other device
OutputStream out = client.getOutputStream(); //This will let you send data.
InputStream in = client.getInputStream(); //This will let you receive data.

现在,如果您可以发送和接收,我在这里已经解决了一个常见的问题...

如果您想知道朋友是否向您发送了数据,该怎么办?

您需要创建 BufferedReader

 iBuff = new BufferedReader(new InputStreamReader(client.getInputStream()));

然后您就可以知道缓冲区中是否有数据:

while (iBuff.ready()) { //While there's data in buffer
            in.read(bytes, 0, 1); //Read
}

如果您尝试使用空缓冲区读取,它将被阻止。对于input.available()也是如此,因为要知道数据是否可用,需要阅读,并且你会遇到同样的问题。

你有一些提示,我花了很多时间试图解决它:)我希望它能帮助你。

PD:对不起我的英语,我是西班牙人^^&#39;