Study Network.framework Study: Client side
Client:Swift、Xcode Server:Java、NetBeans
Client Source Swift
Swift just sets "NWParameters.udp" in NWConnection.
import Foundation
import Network
var running = true
func startConnection() {
    let myQueue = DispatchQueue(label: "ExampleNetwork")
    let connection = NWConnection(host: "localhost", port: 7777, using: NWParameters.udp)
    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")
        running = false
    }
    connection.send(content: data, completion: completion)
}
startConnection()
//dispatchMain()
while running {
    sleep(1)
}
Server Source Java Java uses different classes for TCP and UDP.
package example.java.network;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ExampleServerUDP {
    private static final int EXHOMAX = 255;
    
    public static void main(String[] args) {
        try {
            DatagramSocket datagramSocket = new DatagramSocket(7777);
            DatagramPacket datagramPacket = new DatagramPacket(new byte[EXHOMAX], EXHOMAX);
            while(true) {
                datagramSocket.receive(datagramPacket);
                for(int i = 0; i < datagramPacket.getLength(); i++) {
                    System.out.print(datagramPacket.getData()[i]);
                    System.out.print(" ");
                }
                System.out.println();
                datagramPacket.setLength(EXHOMAX);
            }
        }
        catch(Exception e) {
        }
    }
}
Recommended Posts