Study
Network.framework Etude: côté serveur
Client:Java、NetBeans Server:Swift、Xcode
Client Source Java
Correction d'envoyer plusieurs fois.
package example.java.network;
import java.io.PrintWriter;
import java.net.Socket;
public class ExampleClientSocket {
public static void main(String[] args) {
try(Socket socket = new Socket("localhost", 7777);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);) {
for(int i = 0; i < 5; i++) {
printWriter.println("Example Send Data");
Thread.sleep(5000);
}
}
catch(Exception e) {
System.out.println(e);
}
}
}
Server Source Swift
Utiliser NWLister Recevoir l'enregistrement du traitement et démarrer l'exécution dans NWConnection après l'établissement de la connexion Utilisez la méthode de réception qui peut spécifier le nombre d'octets reçus. À partir d'une donnée reçue, nous avons acquis la longueur maximale pendant plusieurs minutes. Dans l'exemple ci-dessous, il est de 5 octets. Même si vous envoyez 5 octets ou plus, il semble que la réception ne soit pas appelée en continu après le 6e octet. Vous devez appeler la réception vous-même. Appelez la méthode de réception jusqu'à ce que la réception soit terminée. Appelez la méthode de réception lorsque les données d'achèvement reçues sont autres que nil et que l'indicateur d'achèvement est faux.
main.swift
import Foundation
import Network
var networkServer = NetworkServer()
networkServer.startListener()
while networkServer.running {
sleep(1)
}
NetworkServer.swift
import Foundation
import Network
class NetworkServer {
public var running = true
func startListener() {
let myQueue = DispatchQueue(label: "ExampleNetwork")
do {
let nWListener = try NWListener(using: .tcp, on: 7777)
nWListener.newConnectionHandler = { (newConnection) in
print("New Connection!!")
newConnection.start(queue: myQueue)
self.receive(nWConnection: newConnection)
}
nWListener.start(queue: myQueue)
print("start")
}
catch {
print(error)
}
}
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")
}
})
}
}
Recommended Posts