因为最近要做一个小项目,需要windows网络编程方面的知识。而我在这方面并不熟,现在重新面对windows socket感觉api不知道他到底会表达什么目的,网络编程的要点是不是在于错误处理,正确的做好错误处理才能使程序健壮,是吗?我想问的是,网络编程的基本原则就是错误处理的基本原则吗?我举个小例子。
比如TCP协议,才有select模型,使用send发送1024字节数据:
1.成功发送时,send返回值为1024字节。
2.发送不成功,send返回值为ret,此时0<ret<102,然后继续发送余下的数据。
3.发送不成功,send返回-1,此时应该调用WSAGetLastError函数获取错误信息,然后根据错误信息,做进一步处理。是通常这三种吗?因为项目中客户端用到的模型就是select。然后关闭连接,是通常由客户端接收完数据关闭吧。
看msdn说recv返回0表示连接成功关闭,那如何成功关闭一个连接呢?我这边测试的时候(由客户端接收完数据关闭套接字),老是显示连接为成功关闭。求大家三言两语说说哈。
比如TCP协议,才有select模型,使用send发送1024字节数据:
1.成功发送时,send返回值为1024字节。
2.发送不成功,send返回值为ret,此时0<ret<102,然后继续发送余下的数据。
3.发送不成功,send返回-1,此时应该调用WSAGetLastError函数获取错误信息,然后根据错误信息,做进一步处理。是通常这三种吗?因为项目中客户端用到的模型就是select。然后关闭连接,是通常由客户端接收完数据关闭吧。
看msdn说recv返回0表示连接成功关闭,那如何成功关闭一个连接呢?我这边测试的时候(由客户端接收完数据关闭套接字),老是显示连接为成功关闭。求大家三言两语说说哈。
linux下看看:unix网络编程卷1.
在异步,多线程控制上面有很大的优势。你说的那个关闭分长连接和短连接,长连接一般不关闭,发心跳。短连接才会close
是短连接,短连接关闭的话,是服务器发送完数据完数据就关闭吗?
貌似如果客户端接收完数据关闭套接字,服务器那边如果select模型中有recv的话,recv会返回0,是吗?
http://download.csdn.net/detail/geoff08zhang/4571358