[英]Receiving a TCP packet in Swift
我想使用Sacpy将TCP数据包从服务器(Python)发送到客户端(Swift)。 从服务器发送消息:
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)
swift中的代码基于: 具有POST方法的Swift中的HTTP请求
快速接收代码:
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)
error = Optional(Error Domain = NSURLErrorDomain Code = -1005“网络连接丢失。” UserInfo = {NSUnderlyingError = 0x608001043330 {Error Domain = kCFErrorDomainCFNetwork Code = -1005“(null)” UserInfo = {_ kCFStreamErrorCodeKeyKey = -4,kCFStreamErrorDomainKey = 4}},NSErrorFailingURLStringKey = http://10.172.0.136:80/,NSErrorFailingURLKey = http://10.172.0.136:80/,kCFStreamErrorDomainKey = 4,_kCFStreamErrorCodeKey = -4,NSLocalizedDescription =网络连接丢失。})
我认为问题出在客户端的接收上(使用Wireshark,我看到消息被正确嗅探了)。 有一种简单的方法可以修复我的代码吗? 如果确实无法修复,我还可以使用什么其他方式迅速接收数据包?
您的问题是您使用的TCP不正确。 您试图在已建立的连接外部发送单个数据包,但未指定将其与HTTP请求关联所需的任何字段。
不要为此使用Scapy。 (除非您需要进行某种学术练习,否则这样做是完全错误的。) 使用HTTP服务器-如果您想要使用Python的简单服务器,则内置的SimpleHTTPServer是一个合理的起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.