السلام عليكم
اواجه مشكلة ان كل ما احاول اجري اتصال بين الطرفين ان فجاءة و قبل ما ابتدي انفذ اي كود تتحول ال sockets من connected to disconnected
و احيانا تكوت socket واحدة بس هي اللي متصلة و الاخري لأ و بعد ثانيتين او ثلاثة فجاءة تتحول ال socket الاخري لل disconnected
و هذا هو الكود المستحدم و لا اعلم اين المشكلة
شكرا لكم جميعا
//Connection Method
public void ConnectToClient(string IP, int Port)
{
IPAddress ip = IPAddress.Parse(IP);
IPEndPoint ipEndPoint = new IPEndPoint(ip, Port+2);
IPEndPoint ipEndPointClient = new IPEndPoint(ip, Port);
ClientSocket.Connect(ipEndPointClient);
RemoteDesktopSocket.Connect(ipEndPoint);
}
public void StartRecieveRemoteDesktop()
{
RemoteDesktopSocket.BeginReceive(ImageArray, 0, ImageArray.Length, SocketFlags.None, new AsyncCallback(OnRecieveRemoteDesktop), null);
}
//OnReceive Method
void OnRecieveRemoteDesktop(IAsyncResult ar)
{
try
{
RemoteDesktopSocket.EndReceive(ar);
frm.RecieveImage(ImageArray);
RemoteDesktopSocket.BeginReceive(ImageArray, 0, ImageArray.Length, SocketFlags.None, new AsyncCallback(OnRecieveRemoteDesktop), null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// in the other node this is the ReceiveMethods
Form_Load
{
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 402);
IPEndPoint ipEndPoint1 = new IPEndPoint(IPAddress.Any, 400);
//Bind and listen on the given address
s1.Bind(ipEndPoint1);
s.Bind(ipEndPoint);
s1.Listen(-1);
s.Listen(-1);
s1.BeginAccept(new AsyncCallback(onAccept1),null);
s.BeginAccept(new AsyncCallback(onAccept), null);
}
void onAccept(IAsyncResult ar)
{
newSocket=s.EndAccept(ar);
}
void onAccept1(IAsyncResult ar)
{
newSocket1= s1.EndAccept(ar);
}
void StartRecieveEvents()
{
newSocket1.BeginReceive(message, 0, message.Length, SocketFlags.None, new AsyncCallback(OnRecieve), null);
}
void OnRecieve(IAsyncResult ar)
{
newSocket1.EndReceive(ar);
events=Encoding.ASCII.GetString((message));
EventsString=events.Split('*');
rd= new PC_RemoteDesktop();
rd.CallEvent(EventsString);
newSocket1.BeginReceive(message, 0, message.Length, SocketFlags.None, new AsyncCallback(OnRecieve), null);
}
