Python 我应该在循环中从WinAPI调用send函数吗

Python 我应该在循环中从WinAPI调用send函数吗,python,windows,python-2.7,winapi,network-programming,Python,Windows,Python 2.7,Winapi,Network Programming,我应该在循环中调用WinAPI()中的send函数以确保所有数据都已发送(类似于Python标准库中的send函数),还是像sendall函数一样工作?Python和Winsock API都实现了BSD套接字API,因此,send函数的工作原理基本相同。所以不,它不是一个方便的sendall,而且太多的代码认为它是 您可以在windows上编写一个简单的sendall函数,方法是在发送时循环,直到成功发送所有字节,但这在GUI应用程序中是一个坏主意,因为它会阻止应用程序响应用户,在更复杂的控制台

我应该在循环中调用WinAPI()中的
send
函数以确保所有数据都已发送(类似于Python标准库中的
send
函数),还是像
sendall
函数一样工作?

Python和Winsock API都实现了BSD套接字API,因此,
send
函数的工作原理基本相同。所以不,它不是一个方便的
sendall
,而且太多的代码认为它是

您可以在windows上编写一个简单的
sendall
函数,方法是在发送时循环,直到成功发送所有字节,但这在GUI应用程序中是一个坏主意,因为它会阻止应用程序响应用户,在更复杂的控制台应用程序中,它可能会阻止其他套接字通信


如果其中任何一个是问题,您应该调查GUI应用程序的
WSAAsyncSelect
,其中您的window proc将在每次套接字准备好读取或写入时接收窗口消息,或者
select
允许控制台程序/非GUI工作线程在最多32个套接字的集合上循环(视窗限制)测试哪些字节是可读的或可写的。

您是否阅读了文档的这部分?返回值如果没有发生错误,send返回发送的字节总数,可以小于len参数中请求发送的字节数。否则,将返回SOCKET_error的值,callin可以检索特定的错误代码g WSAGetLastError。