Я новичок в этой сети в iOS, поэтому не очень хорошо знаю все концепции, и я делаю приложение, которое позволяет отображать данные в браузере на устройстве, для этого я создаю сокет -порт и с использованием SwiftSocket
library
override func viewDidLoad() {
super.viewDidLoad()
let ip = String(getAddress(for: .wifi)!)
self.host = ip
print("Getting IP address of wifi\n\(self.host)\n")
self.selfserver()
}
Я думаю, что следующая функция selfserver()
инициализирует сервер и ожидает подключения клиента
func selfserver()
{
let server = TCPServer(address: self.host, port: Int32(port))
switch server.listen() {
case .success:
while true {
if let client2 = server.accept() {
print("CLIENT ACCEPTED ....")
self.startconnection(senderclient: client2)
} else {
print("accept error")
}
}
case .failure(let error):
print(error)
}
}
Когда клиент попытается подключиться после будет вызвана функция senderclient(senderclient: TCPClient)
, и в ответе я отправляю файл index.html
, который сохраняется в htmlfileURL
ключе Userdefaults
func startconnection(senderclient: TCPClient) {
print("CLIENT ADD\n\(senderclient.address)\n")
let filePath = UserDefaults.standard.url(forKey: "htmlfileURL")
// Converting `index.html` in bytes to send
var bytes = [UInt8]()
if let data = NSData(contentsOfFile: filePath!.path) {
var buffer = [UInt8](repeating: 0, count: data.length)
data.getBytes(&buffer, length: data.length)
bytes = buffer
}
senderclient.send(string: "HTTP/1.1 200 OK\n" +
"Content-Length: \(bytes.count)\n" +
"Connection: close\n" +
"Content-Type: text/html\n" +
"\n")
switch senderclient.send(data: bytes) {
case .success:
let data = senderclient.read(1024*10)
if let d = data {
if let str = String(bytes: d, encoding: .utf8) {
print("STR\n\(str)\n")
// If I'm not wrong Here I should get the response
}
}
case .failure(let erro):
print(erro)
}
}
Моя проблема - это я я получаю все заголовки запросов и после фильтрации я также получаю, какие filename
и content-type
требует заголовок запроса, но я не знаю, как отправить этот файл после получения и чтения заголовка запроса в ответ.
Как вы можете видеть на скриншоте выше В области консоли вы можете видеть, что я получаю запрос файла styles.afcc5f0641cf44266b1b.css
. ..Я просто не знаю, как отправить этот файл в браузер en он запрашивает (у меня полный путь к файлу)
Спасибо