Win32网络知识

1. WM_APP:

想要定义其自己消息的应用程序应该使用WM_APP。WM_APP 是确保不会与系统(WM_CREATE 等等)或类/特定控件消息如DM_GETDEFID 相冲突的。

2. WSACleanup:

每次调用WSAStartup,都要调用相应的WSACleanup;因为每次启动调都会增加加载winsock DLL的引用计数,因此必须调同样多的WSACleanup,以减少引用计数

3. Winsock API:

在“传输层”和“会话层”之间。

4. TCP/UDP:

TCP:可靠连接。字节流,无报文边界。

UDP:无确认,不可靠,无连接。有报文边界。

5. 端口:

0~1023:系统保留;

1024~65535:用户使用;

6. 同时打开的套接字数目:不固定的,与可用的物理内存有关。

7.一般受到SOCKET_ERROR后,除了WSAEWOULDBLOCK, 都应该关闭套接字,因为它不能再用了。

8. recv可以“消息取数”,即偷看。但不好,性能下降(2次系统调用)。

9. recv:把数据留在参数缓冲中不好,那样剩余缓冲量将减少,可能使系统减少发送端TCP窗口容量,从而使网络流量减少。所以最好把接收到的数据复制到自己的buffer中。

10. send: TCP流情况下,发出的字节也许少于理想的字节。解决方法:用一个循环发送。

11. TCP流情况下,10个send, 也许被1-2个recv就全接收了。

12. UDP: 有connect,  可使用send;

                无connect,  只可使用sendto

13. WSAEWOULDBLOCK: 很多情况下,都可能出现。

14. GetLastError: 独立与线程的,线程之间各自有各自的,不影响!!!

15. MailSlot: 客户机到服务器,不可靠,单向。垃圾!

16. 消息长了,尽量考虑面向连接,因为无连接分片,丢一个就白折腾了

 

你可能感兴趣的:(网络,socket,tcp,服务器,buffer,dll)