Study
Network.framework Etude: côté client
Client:Swift、Xcode Server:Java、NetBeans
Client Source Swift
import Foundation
import Network
func startConnection() {
let myQueue = DispatchQueue(label: "ExampleNetwork")
let connection = NWConnection(host: "localhost", port: 7777, using: NWParameters.tcp)
connection.stateUpdateHandler = { (newState) in
switch(newState) {
case .ready:
print("ready")
sendMessage(connection)
case .waiting(let error):
print("waiting")
print(error)
case .failed(let error):
print("failed")
print(error)
default:
print("defaults")
break
}
}
connection.start(queue: myQueue)
}
func sendMessage(_ connection: NWConnection) {
let data = "Example Send Data".data(using: .utf8)
let completion = NWConnection.SendCompletion.contentProcessed { (error: NWError?) in
print("envoyer complètement")
}
connection.send(content: data, completion: completion)
}
startConnection()
while true {
sleep(1)
}
La dernière boucle est délicate.
Server Source Java
package example.java.network;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ExampleServerSocket {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(7777);
System.out.println("socket create");
Socket socket = serverSocket.accept();
System.out.println("accept");
Scanner scanner = new Scanner(socket.getInputStream());
while(scanner.hasNext() == true) {
System.out.println(scanner.nextLine());
}
}
catch(Exception e) {
System.out.println(e);
}
}
}
J'ai oublié la condition Scanner hasNext () après un long moment. Je dois vérifier et m'améliorer.
Recommended Posts