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("send completely")
}
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);
}
}
}
Recommended Posts