Swift Network.framework Study 20191208「Send and Receive」
Study
Network.framework
Study:Send and Receive
環境
Client:Swift、Xcode
Server:Java、NetBeans
Client Source Swift
main.swift
import Foundation import Network var sendAndReceive = SendAndReceive(host: "localhost", port: 7777, nWParameters: .tcp) sendAndReceive.startConnection() while sendAndReceive.running { sleep(1) }
SendAndReceive.swift
import Foundation import Network class SendAndReceive { public var running = true private var host:NWEndpoint.Host private var port:NWEndpoint.Port private var nWParameters: NWParameters init(host:NWEndpoint.Host, port:NWEndpoint.Port, nWParameters: NWParameters) { self.host = host self.port = port self.nWParameters = nWParameters } func startConnection() { let myQueue = DispatchQueue(label: "ExampleNetwork") let connection = NWConnection(host: host, port: port, using: nWParameters) connection.stateUpdateHandler = { (newState) in switch(newState) { case .ready: print("ready") self.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) self.receive(nWConnection: connection) } func sendMessage(_ connection: NWConnection) { let data = "Example Send Data".data(using: .utf8) let completion = NWConnection.SendCompletion.contentProcessed { (error: NWError?) in print("送信完了") } connection.send(content: data, completion: completion) } func receive(nWConnection:NWConnection) { nWConnection.receive(minimumIncompleteLength: 1, maximumLength: 5, completion: { (data, context, flag, error) in print("receiveMessage") if let data = data { let receiveData = [UInt8](data) print(receiveData) print(flag) if(flag == false) { self.receive(nWConnection: nWConnection) } } else { print("receiveMessage data nil") } }) } }
Server Source Java
package example.java.network; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class ExampleReceiveAndSend { 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"); byte[] data = new byte[1024]; int dataSize = socket.getInputStream().read(data); System.out.println(data); PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true); printWriter.println("Example Return Data"); System.out.println("end"); } catch(Exception e) { System.out.println(e); } } }