두 대의 컴퓨터간에 C#으로 작동하는 간단한 서버/클라이언트 소켓 응용 프로그램을 가져 오는 데 문제가 있습니다. 아이디어가 부족해지기 시작했습니다. 두 컴퓨터에서 Windows XP를 실행 중이며 exe뿐만 아니라 연결을 시도하는 포트에 대한 방화벽 예외가 추가되었습니다. 이상한 부분은 클라이언트와 서버가 하나의 시스템에서 완벽하게 작동한다는 것입니다.PC간에 소켓을 연결하는 데 문제가 있습니다.
서버 코드 :
IPAddress ipAddress;
IPAddress.TryParse("127.0.0.1", out ipAddress);
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 51000);
_ListenerSocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.IP);
try
{
_ListenerSocket.Bind(localEndPoint);
_ListenerSocket.Listen(1000);
while (_Running)
{
_ListenerSync.Reset();
_ListenerSocket.BeginAccept(new AsyncCallback(AcceptCallback), _ListenerSocket);
_ListenerSync.WaitOne();
}
_ListenerSocket.Shutdown(SocketShutdown.Both);
_ListenerSocket.Close();
}
클라이언트 코드 :
tTarget = new Socket(_IP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
tTarget.Connect(_IP, 51000);
AcceptCallback가 호출되고 있지 않습니다. 그래서 뭔가 그 트리거 전에 연결을 거부하고 있습니다. 이 클라이언트/서버 설정은 단일 컴퓨터의 내부 연결 (동일한 컴퓨터에서 클라이언트와 서버를 모두 실행)에서 작동하지만 로컬 네트워크에서 두 대의 컴퓨터를 함께 연결하려고하면 실패합니다. 나는 패킷이 클라이언트되고, 106 도착 확인하기 위해 두 시스템에 와이어 샤크를 설치 한 101 서버 인
No connection could be made because the target machine actively refused it
:
예외는 tTarget.Connect() 호출에 발생되는 .
262 24.724892 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
263 24.724922 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
270 25.144866 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
271 25.144887 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
288 25.647842 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
289 25.647874 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
참고 : 이것은 예외가 throw되기 전에 포트 51000에서 모두 네트워크 통신입니다.
아무 것도 차단되지 않은 것으로 보이며 단일 컴퓨터에서 작동하기 때문에 원격 PC의 연결을 허용하지 않는 소켓의 설정 일 수 있습니다. 어떤 조언을 주시면 감사하겠습니다. 고맙습니다.