다음은 비동기 소켓이있는 시나리오입니다. 2 개의 Tcp 소켓과 클라이언트 소켓 & 서버 소켓이 있습니다. 내 서버 소켓은 포트에서 수신 대기 &입니다.C# Socket.BeginSend AsyncCallback 비헤이비어 (시간 초과?)
내 클라이언트 소켓이 서버 소켓에 연결됩니다 (BeginConnect/EndConnect 사용). 그런 다음 BeginSend()를 사용하여 서버에 메시지를 보냅니다. 서버 측에서는 Receive() 또는 BeginReceive()를 수행하지 않습니다.
무슨 일 뭔가 ... 내 BeginSend 호출에 지정된 내 AsyncCallback은 IAsyncResult를가 어떤 예외를 발생시키지 않습니다 & Socket.EndSend()에 대한 호출을 완료되었음을 알려줍니다 &를 호출 가져옵니다이
가되어입니다 BeginSend 호출이 서버에 실제로 뭔가를 보냈을 때만 (즉, 서버가 모든 바이트를받은 후에 콜백 호출) AsyncCallback을 호출하지 않아도됩니다. 서버에서받은 수신이 없으면 sendtimeout이 만료되고 Socket.EndSend에 대한 호출이 예외를 발생시킨 후에 내 콜백을 호출하지 않아야합니까?감사합니다.
기다려주세요. 서버로부터 TCP ACK를 받기 전에 beginend 콜백이 호출됩니까? 나는 내가 이것을 좋아하는지 모른다. – Chris