소켓을 통해 텍스트 메신저를 보내거나 보내는 데 사용하는 클래스 라이브러리에 큰 문제가 있습니다. 다음은 간단한 코드입니다.소켓 사용 중 ObjectDisposedException
private void AcceptNewSocket()
{
Socket socket = list.AcceptSocket();
socket.ReceiveBufferSize = 1001;
Thread socketTh = new Thread(new ThreadStart(AcceptNewSocket));
socketTh.Start();
WaitForMessenge(socket);
}
private void WaitForMessenge(Socket socket)
{
byte[] buff = new byte[1001];
int bufcount = socket.Receive(buff);
/////////some operations on byte array
while(bufcount > 0)
{
buffcount = socket.Receive(buff); //HERE it throws ObjectDisposedException and source is socket
/////some operations on byte array
}
}
콘솔 응용 프로그램에서 내 라이브러리를 사용할 때 예외는 없습니다. Windows Forms 응용 프로그램에서 사용할 때 발생합니다. 너 나 좀 도와 줄 수있어?
그냥 포기하고 귀하의 네트워킹을 위해 Lindgren과 같은 것을 사용하십시오. raw 소켓으로 작업하는 것은 쉬운 일이 아닙니다. – Luaan
다른 곳에서는 소켓을 닫으면 Receive 메서드를 호출하면 예외가 발생합니다. 객체를 사용하기 전에 객체가 삭제되었는지 확인하십시오. –
나는 그것을 닫지 않는다. 그것은 콘솔 응용 프로그램 사이의 통신에 꽤 잘 실행됩니다. – Wynglarz