Study
Network.framework Study: Client side
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("send completely")
}
connection.send(content: data, completion: completion)
}
startConnection()
while true {
sleep(1)
}
The last loop is awkward.
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);
}
}
}
I forgot the Scanner hasNext () condition after a long time. I have to check and improve.
Recommended Posts