使用TCP,发送数据的工作流程如下:
- open socket()
- write(data1)
- write(data2)
- write ... data n
- close(socket)
但是UDP怎么样?我们保持插座打开吗?还是在每次数据准备就绪时打开套接字?最佳做法是什么?
- open socket();
- write(data1);
- close(socket);
- open socket();
- write(data2);
- close(socket);
答案 0 :(得分:1)
打开TCP套接字通常意味着
并关闭TCP套接字意味着
打开UDP套接字不会触发任何网络通信,只会在OS中创建套接字结构。
打开TCP套接字比打开UDP套接字的开销更大,因为打开和关闭TCP套接字会创建TCP会话,而打开和关闭UDP套接字仅是本地操作。
最佳做法是重用现有的UDP套接字来发送/接收多个数据报。如果可以将其重新用于以后的通信,则关闭UDP套接字是无用的。此外,如果应用程序关闭了UDP套接字,则与该套接字绑定的端口的传入流量将丢失。
答案 1 :(得分:0)
是的,如果还有更多的发送(或接收)操作,则保持套接字打开是很有意义的。