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