socket原理,
https://www.jianshu.com/p/c44f556de0dd
网络连接已中断。
https://docs.microsoft.com/zh-cn/dotnet/api/system.net.webexceptionstatus?view=netframework-4.8
常见的socket出错总结
https://blog.csdn.net/epeaktop/article/details/48714435
socek 返回的code码
https://blog.csdn.net/zilaike/article/details/78227819
使用pod导入swift库,pod会帮我们自动设置桥接文件配置,不需要我们自己再配置了,但我发现即使项目中中有我们自己设置的桥接文件,也不会影响swift三方库的使用,
pod 'Socket.IO-Client-Swift','15.2.0'
二、TCP的三次握手和四次挥手
分析 : SYN(synchronous)是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
2、为什么客户端还要做最后一次确认呢 ?
一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。
如果使用的是两次握手建立连接,假设有这样一种场景,
客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中
滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,
以为服务器没有收到,此时重新向服务器发送这条报文,
此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。
此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,
但是,两次握手的机制将会让客户端和服务器再次建立连接,
这将导致不必要的错误和资源的浪费。
如果采用的是三次握手,就算是那一次失效的报文传送过来了,
服务端接受到了那条失效报文并且回复了确认报文,
但是客户端不会再次发出确认。由于服务器收不到确认,
就知道客户端并没有请求连接。
原文链接:https://blog.csdn.net/qq_18505715/article/details/51043046
SocketIO接收中文乱码
SocketIOClientConfiguration参数中
switch (key, value) {
case let ("connectParams", params as [String: Any]):
return .connectParams(params)
case let ("cookies", cookies as [HTTPCookie]):
return .cookies(cookies)
case let ("extraHeaders", headers as [String: String]):
return .extraHeaders(headers)
case let ("forceNew", force as Bool):
return .forceNew(force)
case let ("forcePolling", force as Bool):
return .forcePolling(force)
case let ("forceWebsockets", force as Bool):
return .forceWebsockets(force)
case let ("handleQueue", queue as DispatchQueue):
return .handleQueue(queue)
case let ("log", log as Bool):
return .log(log)
case let ("logger", logger as SocketLogger):
return .logger(logger)
case let ("path", path as String):
return .path(path)
case let ("reconnects", reconnects as Bool):
return .reconnects(reconnects)
case let ("reconnectAttempts", attempts as Int):
return .reconnectAttempts(attempts)
case let ("reconnectWait", wait as Int):
return .reconnectWait(wait)
case let ("reconnectWaitMax", wait as Int):
return .reconnectWaitMax(wait)
case let ("randomizationFactor", factor as Double):
return .randomizationFactor(factor)
case let ("secure", secure as Bool):
return .secure(secure)
case let ("security", security as SSLSecurity):
return .security(security)
case let ("selfSigned", selfSigned as Bool):
return .selfSigned(selfSigned)
case let ("sessionDelegate", delegate as URLSessionDelegate):
return .sessionDelegate(delegate)
case let ("compress", compress as Bool):
return compress ? .compress : nil
case let ("enableSOCKSProxy", enable as Bool):
套接字设置不同导致的乱码
ç\U0000009b´æ\U00000092å\U00000086\U00000085容å\U0000008c\U00000085å\U00000090«ä»»ä½\U00000095ä½\U0000008eä¿\U00000097ã\U00000080\U00000081æ\U0000009a´é\U0000009c²å\U00000092\U0000008cæ¶\U00000089é»\U00000084å\U00000086\U00000085容ï¼\U0000008cè´¦å\U0000008f·ä¼\U0000009a被å°\U00000081ç¦\U00000081ï¼\U0000009bå®\U00000089å\U00000085¨é\U00000083¨é\U00000097¨ä¼\U0000009a24å°\U0000008fæ\U00000097¶å·¡æ\U0000009f¥å\U00000093¦ï½\U0000009e" 0x000060000144c540
网友评论