تا %60 تخفیف خرید برای 2 نفر با صدور مدرک فقط تا
00 00 00
parand

برنامه نویسی چت ومشکل آن

سلام دوستان

بنده این برنامه سرویس دهنده وسرویس گیرنده رونوشتم که SERVER فقط میتونه متن های CLIENT رودریافت کنه وبعددوباره پس بزنه؟ ولی نمیدونم چرابرنامه رواجرامیکنم بامشکل مواجه میشم ؟ممنون میشم منو دراین زمینه راهنمایی بفرمایید؟

برنامه واسکرین شات: client

برنامه نویسی چت ومشکل آن
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace server
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            int recv;
            byte[] data = new byte[2048];
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            newsock.Bind(ipep);
            newsock.Listen(10);
            MessageBox.Show("Waiting for a client...");
            Socket client = newsock.Accept();
            IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;
            ResultTextBox.Text += string.Format("Connected with {0} at port {1}", clientep.Address, clientep.Port);
            string welcome = "Welcome to my test server";
            data = Encoding.ASCII.GetBytes(welcome);
            client.Send(data, data.Length, SocketFlags.None);
            while (true)
            {
                data = new byte[1024];
                recv = client.Receive(data);
                if (recv == 0)
                    break;
                ResultTextBox.Text += string.Format(Encoding.ASCII.GetString(data, 0, recv));
                client.Send(data, recv, SocketFlags.None);
            }
            ResultTextBox.Text += string.Format("Disconnected from{0}", clientep.Address);
            client.Close();
            newsock.Close();
        }
    }
}

برنامه واسکرین شات Client:

برنامه نویسی چت ومشکل آن
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace client
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            byte[] data = new byte[2048];
            string input, stringData;
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                server.Connect(ipep);
            }
            catch (SocketException)
            {
                MessageBox.Show("Unable to connect to server.");
             
            }
            int recv = server.Receive(data);
            stringData = Encoding.ASCII.GetString(data, 0, recv);
            System.Windows.Forms.MessageBox.Show(stringData);
            while (true)
            {
                input = textBox1.Text;
                if (input == "exit")
                    break;
                server.Send(Encoding.ASCII.GetBytes(input));
                data = new byte[1024];
                recv = server.Receive(data);
                stringData = Encoding.ASCII.GetString(data, 0, recv);
                System.Windows.Forms.MessageBox.Show(stringData);
            }
            MessageBox.Show("Disconnecting from server...");
            server.Shutdown(SocketShutdown.Both);
            server.Close();


        }
    }
}

وقتی هم برنامه SERVER وهم Client روباهم اجرا میکنم ومیخام ازClient متنی روبرای SERVER ارسال کنم با خطای زیر مواجه میشم ؟

برنامه نویسی چت ومشکل آن

برنامه نویسی چت ومشکل آن
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
mars

خب مشکل اینکه شما هنوز ارتباطتون با سرور برقرار نشده... دلیلش هم اینکه شما مشخصات سرور و bind شدن آنرا درون textbox قرار داده اید که این اشتباست و تا زمانی که اطلاعاتی وارد textbox نشود اتصال برقرار نمی شود...

شما باید این کدها رو درون یک متد قرار دهید و در form load صدا بزنید یعنی موقعی که فرم اجرا شد اتصال سرور هم برقرار شود..

در مرحله بعد پیشنهاد می کنم که از thread برای سرور استفاده کنید...

چرا که مشخص نیست چه زمانی client برای server اطلاعات ارسال می کند و فرم منتظر دریافت اطلاعات می مانند که اینهم یه مشکله... و نیاز به مبحث thread دارید.

پاسخ شما
برای ارسال پاسخ خود وارد شوید.
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند