Aşağıdaki sorun yaşıyorum izin verilir her yuva adresi için yalnızca bir kullanıma: Ben WM6 uygulamasını kapatın ve yeniden başlatmayı deneyin kezC# .NET Soket bağlantısı sorunu - normalde
ben bu hatayı alıyorum: System.Net.Socket.Socket.Bind (EndPoint localEP) System.Net.Sockets.Socket.TcpListener.Start() adresinde yalnızca her bir soket adresinin (protokol/ağ adresi/bağlantı noktası) bir kullanımına izin verilir. ...
Bunun nedeni zaman aşımına bağlantı için zaman aralığı nedeniyle olduğunu düşünüyorum Tüm açık konileri kapatmak ve yeni bir bağlantı oluşturmak için zorlamak gibi, bu işlemin doğru yolu mu yoksa bu işlemin farklı bir yolu var mı?
/// <summary>
/// Listens Asynchronously to Clients, creates a recieveMessageHandler to process the read.
///
/// Check WIKI, TODOS
/// </summary>
/// <returns></returns>
public void Listen()
{
myTcpListener.Start();
while (true)
{
//blocks until a client has connected to the server
try
{
TcpClient myTcpClient = myTcpListener.AcceptTcpClient();
DateTime now = DateTime.Now;
//Test if it's necessary to create a client
ClientConnection client = new ClientConnection(myTcpClient, new byte[myTcpClient.ReceiveBufferSize]);
// Capture the specific client and pass it to the receive handler
client.NetworkStream.BeginRead(client.Data, 0, myTcpClient.ReceiveBufferSize, r => receiveMessageHandler(r, client), null);
}
catch (Exception excp)
{
Debug.WriteLine(excp.ToString());
}
}
}
Kapama sırasında myTcpListener'ı kapatın. –
Ancak, bazen uygulamayı kilitleyen ve kapatma kodu çağrılmayan bazı Dlls'i arıyorum. – Astronaut
Bu hatayı daha iyi kullanmanız gerekir. Sadece dışarıda bırakarak ve yönetilmeyen kaynaklarınızı etrafta bırakarak, bu hatayı alırsınız. CLR, yönetilen nesneler için sizin için bellek yönetimini ele alsa da, bunları dosya ve ağ bağlantıları gibi yönetilmeyen nesneler için yapmanız gerekir. –