Java SwiftSocket通信延迟
我正在将Android应用程序移植到iOS平台。这是一个使用TCP套接字编程与外部ESP8266设备通信的应用程序。为了调试代码,我用Java编写了一个代码,使用IntelliJIDE作为服务器,Xcode模拟器作为服务器Java SwiftSocket通信延迟,java,swift,sockets,tcp,Java,Swift,Sockets,Tcp,我正在将Android应用程序移植到iOS平台。这是一个使用TCP套接字编程与外部ESP8266设备通信的应用程序。为了调试代码,我用Java编写了一个代码,使用IntelliJIDE作为服务器,Xcode模拟器作为服务器 try { ServerSocket serverSocket=new ServerSocket(1234); System.out.println("Server Started"); System.out.println(s
try {
ServerSocket serverSocket=new ServerSocket(1234);
System.out.println("Server Started");
System.out.println(serverSocket.getInetAddress());
Socket socket=serverSocket.accept();
System.out.println("Client Accepted");
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
System.out.println("Got: " +bufferedReader.readLine());
Thread.sleep(1000);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
resistanceValueInt-=1
let x=client.send(string:"\(-1)")
这是使用Java的服务器的代码
switch client.connect(timeout: 10) {
case .success:
toggleSwitch.isEnabled=true
connectBtn.isEnabled=false
upArrow.isEnabled=true
downArrow.isEnabled=true
default:
let alert = UIAlertController(title: "Connection Failed.", message: "SST Device is not available", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: "Default action"), style: .`default`, handler: { _ in
NSLog("The \"OK\" alert occured.")
}))
self.present(alert, animated: true, completion: nil)
}
上面是iOS设备与服务器连接的部分
try {
ServerSocket serverSocket=new ServerSocket(1234);
System.out.println("Server Started");
System.out.println(serverSocket.getInetAddress());
Socket socket=serverSocket.accept();
System.out.println("Client Accepted");
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
System.out.println("Got: " +bufferedReader.readLine());
Thread.sleep(1000);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
resistanceValueInt-=1
let x=client.send(string:"\(-1)")
这是客户端向服务器发送数据的地方。应用程序加载时resistanceValueInt从0开始。并在每次按下按钮时递增
我的问题是立即建立与服务器的连接。尽管使用按钮的值的增量和减量不会立即显示。模拟器需要退出,以便在服务器控制台中显示结果
为什么需要关闭模拟器以交付数据?如何修复它?在服务器端,我使用bufferedReader.readLine从客户端读取数据。
虽然在swift代码中,客户端将数据按客户端写入流。发送\+1。这不会将新行字符附加到流。所以Java服务器不知道数据是否完全通过,因为并没有新行字符
因此使用client.send\+1\n。现在服务器知道数据已正确通过。以便在控制台中打印所需的输出。这个问题非常令人困惑。而且,看起来你正在做一个循环睡眠。使用闭包肯定有更好的方法吗?我希望你不是想睡大觉。也许这就是你必须退出模拟器的原因?不过,这个问题对我来说还是很不清楚。