Ejemplo n.º 1
0
        void start_client()
        {
            if (WSA.WSA_Startup(wsaData) != 0)
            {
                log_txt.Text = "Все плохо с всастартап";
            }
            else
            {
                log_txt.Text = "Все ок с всастартап";
            }

            UDP_socket = WSA.Socket(WSA.SOCK_STREAM_UDP, WSA.PPROTO_UDP);
            if (UDP_socket != new IntPtr(-1))
            {
                log_txt.Text += "\r\nУДП сокет создан: " + UDP_socket.ToString();
            }
            else
            {
                log_txt.Text += "\r\nУДП сокет неработит";
            }

            TCP_socket = WSA.Socket(WSA.SOCK_STREAM_TCP, WSA.PPROTO_TCP);
            if (TCP_socket != new IntPtr(-1))
            {
                log_txt.Text += "\r\nТСП сокет создан: " + TCP_socket.ToString();
            }
            else
            {
                log_txt.Text += "\r\nТСП сокет не работит";
            }
        }
Ejemplo n.º 2
0
        void recvServerUDP()
        {
            byte[] recvBuff = new byte[512];
            int    SizeAddr = Marshal.SizeOf(SockAddrServer);
            string result;
            string Source;

            while (true)
            {
                int iResult;
                iResult = WSA.recvfrom(UDP_socket, recvBuff, 512, WSA.SocketFlags.None, ref SockAddrServer, ref SizeAddr);
                if (iResult > 0)
                {
                    Source = Encoding.Default.GetString(recvBuff);
                    result = regexFunc(@"Iconnecttheserver", Source);
                    if (result == "Iconnecttheserver")
                    {
                        AddTextSafe("Сервер найден!: " + new IPAddress(BitConverter.GetBytes(SockAddrServer.sin_addr)).ToString());
                        ChangeTextIPSafe(new IPAddress(BitConverter.GetBytes(SockAddrServer.sin_addr)).ToString());
                        SockAddrServer = new WSA.sockaddr();
                        return;
                    }
                }
                else if (iResult == 0 || iResult == -1)
                {
                    AddTextSafe("Сервер не найден");
                    break;
                }
            }
        }
Ejemplo n.º 3
0
 void send(string str)
 {
     byte[] sendBuff = new byte[512];
     sendBuff = Encoding.Default.GetBytes(str);
     WSA.Send(TCP_socket, sendBuff, 512, 0);
     sendBuff = null;
 }
Ejemplo n.º 4
0
 void restart_client()
 {
     WSA.Close_Socket(UDP_socket);
     log_txt.Text += "\r\nUDP socket destroy";
     WSA.Close_Socket(TCP_socket);
     log_txt.Text += "\r\nTCP socket destroy";
     ChangeFormTextSafe("Risovalko");
     mySTATUS = 0;
     start_client();
 }
Ejemplo n.º 5
0
 void connect_client()
 {
     if (WSA.Connect(textBox1.Text, Convert.ToInt32(textBox3.Text), TCP_socket) != -1)
     {
         log_txt.Text += "\r\nПодключение к серверу установлено";
     }
     else
     {
         log_txt.Text += "\r\nНет подключения к серверу";
     }
     new Thread(delegate() { recvServerTCP(); }).Start();
 }
Ejemplo n.º 6
0
        void SendBroadcast()
        {
            byte[] sendBuff = Encoding.Default.GetBytes("Imyourserverprodigalson");
            string result   = regexFunc(@"[0-9]+\.[0-9]+\.[0-9]+\.", MyIP);

            SockAddrServer.sin_addr   = WSA.inet_addr(result + "255");
            SockAddrServer.sin_port   = WSA.htons((short)Convert.ToInt32(textBox3.Text));
            SockAddrServer.sin_family = 2;
            if (WSA.sendto(UDP_socket, sendBuff, 512, WSA.SocketFlags.None, ref SockAddrServer, Marshal.SizeOf(SockAddrServer)) != -1)
            {
                new Thread(delegate() { recvServerUDP(); }).Start();
            }
            else
            {
                AddTextSafe("Широковещалка не работает");
            }
        }
Ejemplo n.º 7
0
 //events
 private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
 {
     WSA.Close_Socket(UDP_socket);
     WSA.Close_Socket(TCP_socket);
     WSA.WSA_Cleanup();
 }
Ejemplo n.º 8
0
        void recvServerTCP()
        {
            byte[] recvBuff = new byte[512];
            string Source;

            send("IYOUCLIENT");
            while (true)
            {
                int iResult;
                iResult = WSA.Recv(TCP_socket, recvBuff, 512, 0);
                if (iResult > 0)
                {
                    Source = Encoding.Default.GetString(recvBuff);

                    if (regexFunc(@"IAMHERE", Source) == "IAMHERE")
                    {
                        send("IAMHERETOO");
                        int tv = 2000;
                        WSA.setsockopt(TCP_socket, 65535, 4102, ref tv, Marshal.SizeOf(tv));
                        continue;
                    }

                    int CommandType = Convert.ToInt32(regexFunc(@"CommandType=[0-9]+", Source).Substring(12));
                    switch (CommandType)
                    {
                    case 0:
                        string str = regexFunc(@"Text=\W\w+", Source);
                        if (str.Length > 0)
                        {
                            if (str.Substring(5) == "!start")
                            {
                                lock (this)
                                    Graphics.FromImage(pictureBox1.Image).Clear(Color.White);
                            }
                        }
                        str = Source.Substring(0, 5) + " " + Source.Substring(26);
                        AddTextSafe(str);
                        recvBuff = new byte[512];
                        break;

                    case 1:
                        int    x, y;
                        string X, Y;
                        X = regexFunc(@"X=\d+", Source).Substring(2);
                        x = Convert.ToInt32(X);
                        Y = regexFunc(@"Y=\d+", Source).Substring(2);
                        y = Convert.ToInt32(Y);
                        ((Bitmap)pictureBox1.Image).SetPixel(x, y, Color.Black);
                        PBSafeRefresh();
                        recvBuff = new byte[512];
                        break;

                    case 2:
                        clients.Clear();
                        Match match_client_ip      = regexFuncMass(@"client=[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", Source);
                        Match match_client_socket  = regexFuncMass(@"socket=[0-9]+", Source);
                        Match match_client_status  = regexFuncMass(@"status=[0-9]", Source);
                        Match match_client_results = regexFuncMass(@"result=[0-9]+", Source);
                        while ((match_client_ip.Success) && (match_client_status.Success) && (match_client_results.Success))
                        {
                            Client cclient;
                            cclient.ip          = match_client_ip.Value.Substring(7);
                            cclient.game_bill   = Convert.ToInt32(match_client_results.Value.Substring(7));
                            cclient.game_status = Convert.ToInt32(match_client_status.Value.Substring(7));
                            cclient.socket      = match_client_socket.Value.Substring(7);
                            clients.Add(cclient.socket, cclient);
                            match_client_socket  = match_client_socket.NextMatch();
                            match_client_ip      = match_client_ip.NextMatch();
                            match_client_status  = match_client_status.NextMatch();
                            match_client_results = match_client_results.NextMatch();
                        }
                        Update_list();
                        recvBuff = new byte[512];
                        break;

                    case 3:
                        if (mySTATUS == 1)
                        {
                            mySTATUS = 0;
                            MessageBox.Show("Ваше слово одгадали! +10");
                            ChangeFormTextSafe("Risovalko");
                        }
                        else
                        {
                            mySTATUS = 1;
                            string str2 = Source.Substring(13);
                            ChangeFormTextSafe("Рисовалец. Слово: " + str2);
                        }
                        break;
                    }
                    Source = null;
                }
                else if (iResult == 0 || iResult == -1)
                {
                    AddTextSafe("Сервер отключился!");
                    ChangeFormTextSafe("Risovalko");
                    mySTATUS = 0;
                    break;
                }
            }
            recvBuff = null;
        }