サーバ(Python)からクライアント(Swift)へのsacpyを使用してTCPパケットを送信します。 HTTP Request in Swift with POST methodSwiftでTCPパケットを受信
迅速にコードを受信:
packet = IP()/TCP()/Raw()
print(CLIENT_IP, CLIENT_PORT)
packet[IP].dst = CLIENT_IP
packet[TCP].dport = CLIENT_PORT
#packet[Raw].load = str(to_text(places_list))
#print(str(to_text(places_list)))
packet[Raw].load = "HELLO WORLD"
send(packet)
迅速でコードが基づいている:サーバーからメッセージを送信
var request = URLRequest(url: URL(string: "http://10.172.0.136:80")!)
request.httpMethod = "POST"
let postString = "x=30&y=10&name=hello"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(String(describing: error))")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")
}
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(String(describing: responseString))")
print("response = \(String(describing: response))")
}
task.resume()
パケットがサーバから送信されますが、クライアントはそれを受信しません。 パケットをポートに送信しようとしましたが、そのポートからクライアントからサーバーに送信されました。また、ポート80(HTTP)に送信しようとしました。どちらの場合も は、エラーがあった。(10.172.0.136は、サーバーのIPです)
エラー=オプション(エラードメイン= NSURLErrorDomainコード= -1005 "ネットワーク接続が失われました" のUserInfo = {NSUnderlyingError = 0x608001043330 {エラードメイン= kCFErrorDomainCFNetworkコード= -1005 "(ヌル)" のUserInfo = {_ kCFStreamErrorCodeKey = -4、kCFStreamErrorDomainKey = 4}}、NSErrorFailingURLStringKey = http://10.172.0.136:80/、NSErrorFailingURLKey = http://10.172.0.136:80/、kCFStreamErrorDomainKey = 4、_kCFStreamErrorCodeKey = -4、NSLocalizedDescription =ネットワーク接続})
私は、問題がクライアントで受信していると仮定します(U Wiresharkを歌って、メッセージが正しく盗聴されたのを見ました)。 コードを簡単に修正する方法はありますか?それが本当に修正不可能な場合は、他の方法でパケットを迅速に受信することができますか?
ありがとうございます。私は最後にSimpleHTTPServerの代わりにBottleフレームワークを使用しました。 – Inbal