0
약 10 개의 스레드가있는 클라이언트로 winsock을 사용하고 있습니다.다른 스레드의 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. 나중에 내 게시물을 소스 코드로 업데이트합니다. –
제 잘못입니다. 지금은 잘 작동합니다. Indy에 문제가있었습니다. –