Android平板电脑,路由器和2个设备之间的单向连接

时间:2012-08-15 14:11:32

标签: java android sockets

我有疑问,我还没有找到答案。我有2个设备,每个都有wifi,发送特殊数据。我想在平板电脑上同时显示这些数据。有一个带网络的路由器,平板电脑和设备都连接到这个网络。

如何解决这个问题?我应该使用serversocket吗?我不知道我是否明确说明了,如果没有,请问。感谢您的回复。

2 个答案:

答案 0 :(得分:0)

我在我工作的公司运行相同的应用程序。 “设备”是一个基于微控制器的设备,它实现了lwIP(轻量级IP协议),它正在监听端口83,平板电脑每500毫秒读取一个新的新数据并将其绘制成图形。像魅力一样。

(如果您要绘制图表,我使用了AChartEngine,您可以使用一些有用的信息在我的个人资料上查看问题/答案)

下面的代码是我正在做的简化版本。完整版本包括 SEVERAL try{ } catch() { },以防它捕获异常,尝试关闭套接字并返回null;

public static String SendMessage(String message, String ip, int port) {

    // Connect to host ==================================
    Socket socket = new Socket();
    socket.setSoTimeout(TIMEOUT);
    InetSocketAddress addr = new InetSocketAddress(ip, port);
    socket.connect(addr, TIMEOUT);

    // Send Message ======================================
    byte[] outputBuffer = message.getBytes();
    socket.getOutputStream().write(outputBuffer);

    // Zero the input buffer =============================
    for (int i = 0; i < inputBuffer.length; i++) {
        inputBuffer[i] = 0;
    }

    // Read the response ==================================
    int count = 0;
    do {
        count = socket.getInputStream().read(inputBuffer);
    } while (count != -1);

    // Close connection ====================================
    close(socket);

    // Return message ======================================
    return new String(inputBuffer).trim();
}

希望它有所帮助, 快乐的编码。

答案 1 :(得分:0)

1。插座将是一个好主意。

发送:

Socket s = new Socket();
s.connect(new InetSocketAddress("IP_ADDR",PORT_NO);

OutputStream o = s.getOutputStream();
PrintWriter pw = new PrintWriter(o);
pw.write(msg);   // msg will be the data needed to send

收件人:

Socket s = new Socket();
s.connect(new InetSocketAddress("IP_ADDR",PORT_NO);

InputStream i = s.getInputStream();
InputStreamReader isr = new InputStreamReader(i);
BufferedReader br = new BufferedReader(isr);
String str = new String();

while((str=br.readLine())!=null){

   System.out.println(str);  // do whatever u want to do with str, the data read


 }