Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Co jeszcze mogę dodać ? "CHAT"


Rekomendowane odpowiedzi

Opublikowano

Tak jak w temacie.

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
using System.Net;
using System.Net.Sockets;
 
namespace Chat_Client_APP
{
    public partial class Form1 : Form
    {
        Socket sck;
        EndPoint epLocal, epRemote;
 
        public Form1()
        {
            InitializeComponent();
 
            sck = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            sck.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
 
            textLocalIp.Text = GetLocalIP();
            textFriendsIp.Text = GetLocalIP();
 
        }
 
        private string GetLocalIP()
        {
            IPHostEntry host;
            host = Dns.GetHostEntry(Dns.GetHostName());
 
            foreach (IPAddress ip in host.AddressList)
            {
                if(ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    return ip.ToString();
                }
            }
            return "127.0.0.1";
        }
 
        private void MessageCallBack(IAsyncResult aResult)
        {
            try
            {
                int size = sck.EndReceiveFrom(aResult, ref epRemote);
                if (size > 0)
                {
                    byte[] receivedData = new byte[1464];
 
                    receivedData = (byte[])aResult.AsyncState;
                    ASCIIEncoding eEncoding = new ASCIIEncoding();
                    string receivedMessage = eEncoding.GetString(receivedData);
                    listMessage.Items.Add("Przyjaciel: " + receivedMessage);
 
                }
 
                byte[] buffer = new byte[1500];
                sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
 
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                epLocal = new IPEndPoint(IPAddress.Parse(textLocalIp.Text), Convert.ToInt32(textLocalPort.Text));
                sck.Bind(epLocal);
 
                epRemote = new IPEndPoint(IPAddress.Parse(textFriendsIp.Text), Convert.ToInt32(textFriendsPort.Text));
                sck.Connect(epRemote);
 
                byte[] buffer = new byte[1500];
                sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
 
                button1.Text = "Połączono";               
                button1.Enabled = false;
                button2.Enabled = true;
                button3.Enabled = true;
                textMessage.Focus();
 
                listMessage.Items.Add("Połączono...");
                listMessage.Items.Add("------------------------------------------------------------------------------------------------------------------------------------------------------------");
 
                label5.ForeColor = Color.Green;
                label5.Text = "On-line";
 
                groupBox1.Hide();
                groupBox2.Hide();
 
                textMessage.Enabled = true;
 
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {          
                label5.ForeColor = Color.Red;
                label5.Text = "Off-line";
 
            button1.Enabled = true;
            button2.Enabled = false;
            button1.Text = "Połącz";
      
            textLocalPort.Clear();
            textFriendsPort.Clear();
            listMessage.Items.Clear();
 
            groupBox1.Show();
            groupBox2.Show();
 
            
            
        }
 
        private void groupBox1_Enter(object sender, EventArgs e)
        {
            
        }
 
        private void listMessage_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }
 
        private void groupBox5_Enter(object sender, EventArgs e)
        {
            
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
            try
            {
                System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
                byte[] msg = new byte[1500];
                msg = enc.GetBytes(textMessage.Text);
 
                sck.Send(msg);
 
                listMessage.Items.Add("Ja: " + textMessage.Text);
                textMessage.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }       
    }
}
 
 

­

 

 

Właśnie nie mam pojęcia jak zrobić aby aplikacja ciągle chodziła w sensie jak klikę rozłącz, a później chcę znowu się połączy to żeby ona ciągle działała... ( :D

 

Właśnie i najlepiej, żeby to miało połączenie z bazą (ze stroną/ np. użytkownik rejestruje  się  na "przykladowa_strona.pl", a później żeby mógł się zalogować do aplikacji. i po zalogowaniu mógł korzystać z Chat'u, oczywiście stronę mam już napisaną tylko jeszcze to trzeba przerobić... jakieś pomysły ?) 

 

 

 

+ za pomoc. KILKA LIMTÓW. 

Practice Makes PerfectJulie James


 

Opublikowano

zrob skrypt w php, echo '1' gdy zalogowany a echo '0' gdy nie. 

 

wczytajza pomoca web requesta zawartosc strona.pl/skrypt.php?login=xxx&pass=xxx dla przykladu. 

 

if(zwroconawartosc="1"){

polaczdochatu();

}

Hello there.

Opublikowano

Tworzysz socket w jednej aplikacji.. Zrób osobny projekt "Serwer" który będzie cały czas uruchomiony oraz osobny projekt samego klienta który będzie łączył się do serwera i reszta to już tak jak masz, czyli przekładał wiadomości pomiędzy klientami. Podczas gdy się rozłączysz to usuwasz tego klienta z aktualnej listy połączonych klientów i tyle.. czekasz aż kolejny klient się połączy. Proste. W necie jest dużo przykłaowych aplikacji client server czy to przez TCP czy UDP. Jak wolisz

Osobiście pomagam tylko na PW lub e-mail


-----------------------------------------------------------------


https://github.com/smietanka

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...