我有问题,我还没有找到答案。我有 2 个带 wifi 的设备,它们都在发送特殊数据。我想在平板电脑上同时显示这些数据。有一个带网络的路由器,平板电脑和设备都连接到这个网络。
如何解决这个问题?我应该使用服务器套接字吗?不知道我解释的是否清楚,如果没有,请追问。感谢您的任何回复。
我在我工作的公司上运行相同的应用程序。“设备”是一个基于微控制器的设备,它实现了 lwIP(轻量级 IP 协议),它监听端口 83,平板电脑每隔 500 毫秒读取一次新数据并将其绘制在图表中。奇迹般有效。
(如果您要绘制图表,我使用了 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();
}
希望它有所帮助,快乐编码。
1. Socket 会是个好主意。
发送 :
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
}