0
我使用winsock作爲一個客戶端與約10線程。Winsock recv在不同的線程
每個線程都有自己獨特的連接到相同的主機和端口。 所有線程都已連接,它們都需要同時讀取一定數量的字節 。我發現我一次只能使用1個recv函數,爲什麼?
function RecvThread (p : pointer) : Integer; stdcall;
var
Sock : TSocket;
Addr : TSockAddrIn;
res : Integer;
begin
Addr.sin_family := AF_INET;
Addr.sin_port := htons(8080);
Sock := Socket(AF_INET, SOCK_STREAM, 0);
Addr.sin_addr.S_addr := INET_ADDR (pchar('localhost'));
if (Connect(Sock, Addr, SizeOf(Addr)) = 0) then begin
while true do begin
res := recv (sock, buff, 99999, 0); // just example
if (res < 0) or (res = INVALID_SOCKET) then break;
end;
// Free Stuff, Disconnect, etc...
end;
我使用indy 9.我稍後會用源代碼更新我的帖子。 – 2012-08-09 22:46:49
我的不好。現在它工作正常。印地有問題。 – 2012-08-10 23:27:33