Esempio n. 1
0
 /// <summary>
 /// ��Է�UDP�˿ڷ�����������
 /// </summary>
 private void UdpHandshake()
 {
     try
     {
         IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile();
         if (!UdpHandshakeInfoClass)//�������������
         {
             msg.InfoClass = (byte)IMLibrary.Class.ProtocolFileTransmit.HandshakeLAN;
             this.sockUDP1.Send(this._OppositeUserInfo.LocalIP, this.OppositeUDPPort, msg.getBytes());
         }
         else if (UdpHandshakeInfoClass)//�������������
         {
             msg.InfoClass = (byte)IMLibrary.Class.ProtocolFileTransmit.HandshakeWAN;
             this.sockUDP1.Send(this._OppositeUserInfo.IP, this.OppositeUDPPort, msg.getBytes());
         }
     }
     catch { }
 }
Esempio n. 2
0
        /// <summary>
        /// ���˫�����ӵĹ���
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerConnection_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (this.netClass != IMLibrary.Class.NetCommunicationClass.None)//���UDPͨ�ųɹ�
            {
                this.timerConnection.Enabled = false;//ֹͣͨ��״̬���
                if (this.fileTransmitConnected != null)//����ͨ�ųɹ��¼������˳�ͨ�Ų���
                    this.fileTransmitConnected(this, this.netClass);
                return;
            }

            TimeOutCount++;

            if (TimeOutCount == 1) ///����˫������ͬһ�������ڣ������P2P UDP��ʽ�շ�����
            {
                this.UdpHandshakeInfoClass = false;//UDP���������ֿ��ܣ���һ��Ϊ����������Ϊfalse���ڶ���Ϊ����������Ϊtrue;��ʱ���Ϊ������false
                if (!this.sockUDP1.Listened)//���û��������������
                    this.UDPListen();
                if (!this.IsGetLanUDP && this.fileTransmitGetUDPPort != null)//����UDP�˿������ɹ��¼����Ա�Է���֪�Լ���UDP�˿�
                {
                    this.IsGetLanUDP = true;//��ʶ�Ѿ�������LanUDP�˿ڴ����¼�
                    this.fileTransmitGetUDPPort(this, this.selfUDPPort, this.UdpHandshakeInfoClass);
                }
            }

            ///����ִ�е������ʾ˫������Ϊ������ͨ�Ų�����
            ///2�뿪ʼ���Թ�����UDPͨ��
            if (TimeOutCount == 20)
                if (this._selfUserInfo.NetClass < (byte)IMLibrary.Class.NatClass.Tcp && this._OppositeUserInfo.NetClass < (byte)IMLibrary.Class.NatClass.Tcp)
                {
                    //���˫�����ڹ������ϣ�����UDPͨ�ţ���˫�������� Symmetric NAT������ù����� P2P UDP ͨ��
                    this.UdpHandshakeInfoClass = true;//UDP���������ֿ��ܣ���һ��Ϊ����������Ϊfalse���ڶ���Ϊ����������Ϊtrue;��ʱ���Ϊ������
                    if (!this.sockUDP1.Listened)//���û��������������
                        this.UDPListen();

                    IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile();
                    msg.InfoClass = (byte)IMLibrary.Class.ProtocolFileTransmit.GetUDPWANInfo;//ͨ��Э�飬����ļ������׽��ֵĹ�����UDP�˿�
                    this.sockUDP1.Send(_serverIp, _serverUDPPort, msg.getBytes());
                }
                else
                {
                    TimeOutCount = 40;//���ֻ��ͨ����������ļ�����ʼʹ�ô���
                }

            //4���ʼ���Թ�����
            if(TimeOutCount==40)
            {
                //����û��Լ���Է�����һ��ʹ��TCP��¼������Ҫʹ��TCP�����������ת���ݴ���
                this.asyncTCPClient1.InitSocket(this._selfUserInfo.LocalIP, 0);//�����TCP����˿�
                this.asyncTCPClient1.Connect(this._serverIp, _serverTCPPort);//TCP������ӷ�����
            }

            ///����ִ�е��˱�ʾ���ܽ����κ��ļ��������ӣ������޷������¼�
            //7���ʼ���Թ�����
            if (TimeOutCount > 70)
            {
                if (this.fileTransmitConnected != null)//����ͨ�ųɹ��¼������˳�ͨ�Ų���
                    this.fileTransmitConnected(this, this.netClass);
                this.timerConnection.Enabled = false;//ֹͣͨ��״̬���
                this.CancelTransmit(true);//ȡ���ļ�����
                return;
            }
        }
Esempio n. 3
0
 /// <summary>
 /// UDP���ݵ����¼�
 /// </summary>
 /// <param name="e">UDP���ݲ���</param>
 private void sockUDP1_DataArrival(object sender,IMLibrary.Net.SockEventArgs  e)
 {
     //if (e.Data.Length < 10) return;
     IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile(e.Data);
     this.DataArrival(msg,IMLibrary.Class.NatClass.FullCone, e.IP,e.Port);
 }
Esempio n. 4
0
 private void asyncTCPClient1_OnDataArrival(object sender, IMLibrary.Net.SockEventArgs e)
 {
     //if (e.Data.Length < 10) return;
     IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile(e.Data);
     this.DataArrival(msg,IMLibrary.Class.NatClass.Tcp ,null,0);
 }
Esempio n. 5
0
 private void asyncTCPClient1_OnConnected(object sender,  IMLibrary.Net.SockEventArgs  e)
 {
     //IMLibrary.Calculate.WirteLog("������");
     IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile((byte)IMLibrary.Class.ProtocolFileTransmit.GetFileTransmitProxyID, -1, -1, 0, new byte[1]);
     this.asyncTCPClient1.SendData(msg.getBytes());//�������������ת����ID��
 }
Esempio n. 6
0
        /// <summary>
        /// ���öԷ��ļ�����UDP���ض˿� 
        /// </summary>
        /// <param name="Port">�ļ�����UDP���ض˿�</param>
        public void setFileTransmitGetUdpLocalPort(int Port, bool udpHandshakeInfoClass)
        {
            this.OppositeUDPPort = Port;//���öԷ�UDP�˿ں�
            this.UdpHandshakeInfoClass = udpHandshakeInfoClass;

            System.Threading.Thread.Sleep(100);

            if (!udpHandshakeInfoClass)//����Լ���δUDP����,���þ�������ʽͨ��
            {
                if (!this.sockUDP1.Listened)//���û������
                    this.UDPListen();//���UDP����
                if (!this.IsGetLanUDP && this.fileTransmitGetUDPPort != null)//��֮�Է����ض˿ڣ�������ö˿��¼�
                {
                    this.IsGetLanUDP = true;//��ʶ�Ѿ�������LAN UDP�¼�
                    this.fileTransmitGetUDPPort(this, this.selfUDPPort, false);
                }
                //Calculate.WirteLog(this._IsSend.ToString() + "����Լ���δUDP����,���þ�������ʽͨ��");
            }
            else if (udpHandshakeInfoClass)//���ù�������ʽͨ��
            {
                if (!this.sockUDP1.Listened)//���û������
                    this.UDPListen();//���UDP����
                IMLibrary.Class.msgFile msg = new IMLibrary.Class.msgFile();
                msg.InfoClass = (byte)IMLibrary.Class.ProtocolFileTransmit.GetUDPWANInfo;//ͨ��Э��
                this.sockUDP1.Send(_serverIp, _serverUDPPort, msg.getBytes());//����ļ������׽��ֵĹ�����UDP�˿�
                //Calculate.WirteLog(this._IsSend.ToString() + "����ļ������׽��ֵĹ�����UDP�˿�");
            }

            if (!timersUdpPenetrate.Enabled)//���δ���֣���ʼ����
                timersUdpPenetrate.Enabled = true;//��ʼ��Է�UDP�˿�����(��),����ɹ�����ʾ���Խ���UDPͨ��
        }