001 socket通信

2022-08-26  本文已影响0人  六道Peter

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

上一篇 下一篇

猜你喜欢

热点阅读