yyzybb537 / libgo

Go-style concurrency in C++11
MIT License
3.22k stars 758 forks source link

windows下的问题 #159

Open bigbao9494 opened 5 years ago

bigbao9494 commented 5 years ago

下面的这些BUG,感觉确实有,我就把sample4_echo修改成一个简单的windows下的server/client程序 就使用connet连接服务器,send/recv收发数据,却不能正常工作,总不能写网络程序非得使用boost.asio吧

1、connet问题可能是: connect_mode_hook函数中有BUG,这个if判断有问题, 应该修改成if (res < 0 && WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAEWOULDBLOCK)

if (res < 0 && WSAGetLastError() != WSAEINPROGRESS) { ErrnoStore es; setNonblocking(s, false); return res; } 2、感觉read_mode_hook也有BUG,使用recv()去读socket数据时不能正常工作,暂时未找到BUG在哪儿

yyzybb537 commented 5 years ago

为什么要这样改呢?

hxlh commented 3 years ago

@yyzybb537 原代码在win下使用时,connect调用后会立即返回-1,getlasterror 返回10035 (即WSAEWOULDBLOCK)

mengge666shuai commented 1 year ago

@yyzybb537 确实存在这个问题,@bigbao9494 他这样改完就可以了