저는 C# 채팅 프로그램을 만들고 있지만 외부 연결에 문제가 있습니다. 동일한 컴퓨터가 서버와 클라이언트로 모두 연결될 때 문제가없는 것처럼 보이지만 한 컴퓨터에서 연결을 호스팅하려고하면 다른 컴퓨터에서 클라이언트로 연결할 수 없습니다. 다음은 관련 코드입니다. 클래스 서버 : public void Connect (string ipAddr, string port) { server = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);다른 컴퓨터에서 내 프로그램을 연결할 수 없습니다.
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, Convert.ToInt32(port));
server.Bind(ipLocal);//bind to the local IP Address...
server.Listen(5);//start listening...
// create the call back for any client connections...
server.BeginAccept(new AsyncCallback(OnClientConnect), null);
}
public void Disconnect()
{
server.Close();
server = null;
tempSocket = null;
}
public void OnClientConnect(IAsyncResult asyn)
{
try
{
if (server != null)
{
tempSocket = server.EndAccept(asyn);
WaitForData(tempSocket);
server.BeginAccept(new AsyncCallback(OnClientConnect), null);
}
}
catch (ObjectDisposedException)
{
Debugger.Log(0, "1", "OnClientConnect: Socket has been closed.");
}
catch (Exception e)
{
MessageBox.Show(e.Message, "OnClientConnect Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
클라이언트 클래스 : 공공 무효 연결 (문자열 IPADDR, 문자열 포트) { 클라이언트 = 새로운 소켓 (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ipe = 새 IPEndPoint (IPAddress.Parse (ipAddr), Convert.ToInt32 (port)); client.Connect (ipe);
clientListener = new Thread(OnDataReceived);
isEndClientListener = false;
clientListener.Start();
}
여기에 무슨 문제가 있는지 잘 모르겠습니다. 당신이 무엇이 잘못되었는지 말해 줄 수 있기를 바랍니다.
두 가지 답변 모두에 감사드립니다. :) – user3576453