2012-08-15 37 views
0

我有问题,我还没有找到答案。我有2个设备与每个无线,这是发送特殊数据。我想在平板电脑上同时显示这些数据。有一台带网络的路由器,平板电脑和该设备都连接到该网络。Android平板电脑,路由器和2个设备之间的单向连接

如何解决这个问题?我应该使用serversocket吗?我不知道我是否足够清楚地解释它,如果没有,请询​​问。感谢您的回应。

回答

0

我有同样的应用程序运行在我工作的公司上。 “设备”是一个基于微控制器的设备,它实现了lwIP(轻量级IP协议),它正在监听端口83,并且每隔500ms平板电脑就会读取新的新数据并将其绘制在图形中。奇迹般有效。

(的情况下,你会被绘制图表,我用AChartEngine,你可以在我的个人资料查看一个问题就可以了/回答一些有用的信息)

下面的代码是一个简化版本我正在做。完整版本包括几个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(); 
} 

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

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 


} 
相关问题