0
我有這樣的代碼C#套接字發送錯誤
public static void Send(Socket socket, byte[] buffer, int offset, int size, int timeout)
{
int startTickCount = Environment.TickCount;
int sent = 0; // how many bytes is already sent
do
{
if (Environment.TickCount > startTickCount + timeout)
throw new Exception("Timeout.");
try
{
sent += socket.Send(buffer, offset + sent, size - sent, SocketFlags.None);
}
catch (SocketException ex)
{
if (ex.SocketErrorCode == SocketError.WouldBlock ||
ex.SocketErrorCode == SocketError.IOPending ||
ex.SocketErrorCode == SocketError.NoBufferSpaceAvailable)
{
// socket buffer is probably full, wait and try again
Thread.Sleep(30);
}
else
throw ex; // any serious error occurr
}
} while (sent < size);
}
形式打開時,我送它和關閉:
開放時間:
Launcher.Send(sock, Encoding.UTF8.GetBytes("Hello world"), 0, "Hello World".Length, 1000);
它工作的很好,但在形式關閉:
try
{
Launcher.Send(s, Encoding.UTF8.GetBytes("Bye world"), 0, "Bye world".Length, 1000);
}
catch
{
Message.Error("Error");
}
我總是得到Erro r消息。那裏有什麼問題?謝謝advace
編輯:
我已刪除的try {}趕上{}。現在我越來越:無法訪問處置對象。對象名稱:'System.Net.Sockets.Socket'。我不知道問題在哪裏,因爲如果我刪除套接字發送應用程序加載,然後關閉工程
「我總是得到錯誤信息」 - *什麼*錯誤信息? –
我被刪除嘗試{} catch {}。現在我越來越:無法訪問處置對象。對象名稱:'System.Net.Sockets.Socket'。我不知道問題在哪裏,因爲如果我刪除套接字發送應用程序加載,然後關閉作品 –
@JonSkeet我已更新我的問題 –