Blackk_lightt
دوشنبه 27 آبان 1387, 11:03 صبح
سلام
من این برنامه رو برای چت بین دو کامپیوتر نوشتم
ولی دوتا مشگل داره :
1-هر کامپیوتر فقط میتونه یه بار پیغام بفرسته و دیگه انگار فرستاده نمیشه
2-مثلا اگه کامپیوتر اول "123" بفرسته بعد کامپیوتر دوم بفرسته "456" برای کامپیوتر اول همون رشته خودش یعنی "123" میره !!!
:متفکر::عصبانی++::عصبانی:
کد کلاینت :
public partial class Form1 : Form
{
Socket Server;
byte [] Buffer = new byte [1024];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(textBox1.Text),6060);
Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Server.Connect(ipep);
}
private void button2_Click(object sender, EventArgs e)
{
Buffer = Encoding.ASCII.GetBytes(textBox1.Text);
Server.Send(Buffer);
}
}
کد سرور :
public partial class Form1 : Form
{
Socket worker;
Socket SCK;
byte[] buffer = new byte[1024];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
buffer = Encoding.ASCII.GetBytes(textBox1.Text);
worker .Send(buffer);
}
private void Form1_Load(object sender, EventArgs e)
{
SCK = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint IPEND = new IPEndPoint(IPAddress.Any, 6060);
SCK.Bind(IPEND);
AsyncCallback callBackMethod = new AsyncCallback(AcceptCallback);
SCK.Listen(100);
SCK.BeginAccept(callBackMethod , SCK );
textBox1.Text = "Listening ...";
}
private void AcceptCallback(IAsyncResult ar)
{
Socket temp = ((Socket)ar.AsyncState);
worker = temp.EndAccept(ar);
AsyncCallback ReceiveMethod = new AsyncCallback(ReceiveCallBack);
worker.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None,ReceiveMethod , worker);
MessageBox.Show("Accept");
}
private void ReceiveCallBack(IAsyncResult ar)
{
Socket worker_ = ((Socket)ar.AsyncState);
int bytesReceived = worker_.EndReceive(ar);
string str = System.Text.UTF8Encoding.UTF8.GetString(buffer);
MessageBox.Show(str);
}
}
من عجله دارم
ممنون
بای
من این برنامه رو برای چت بین دو کامپیوتر نوشتم
ولی دوتا مشگل داره :
1-هر کامپیوتر فقط میتونه یه بار پیغام بفرسته و دیگه انگار فرستاده نمیشه
2-مثلا اگه کامپیوتر اول "123" بفرسته بعد کامپیوتر دوم بفرسته "456" برای کامپیوتر اول همون رشته خودش یعنی "123" میره !!!
:متفکر::عصبانی++::عصبانی:
کد کلاینت :
public partial class Form1 : Form
{
Socket Server;
byte [] Buffer = new byte [1024];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(textBox1.Text),6060);
Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Server.Connect(ipep);
}
private void button2_Click(object sender, EventArgs e)
{
Buffer = Encoding.ASCII.GetBytes(textBox1.Text);
Server.Send(Buffer);
}
}
کد سرور :
public partial class Form1 : Form
{
Socket worker;
Socket SCK;
byte[] buffer = new byte[1024];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
buffer = Encoding.ASCII.GetBytes(textBox1.Text);
worker .Send(buffer);
}
private void Form1_Load(object sender, EventArgs e)
{
SCK = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint IPEND = new IPEndPoint(IPAddress.Any, 6060);
SCK.Bind(IPEND);
AsyncCallback callBackMethod = new AsyncCallback(AcceptCallback);
SCK.Listen(100);
SCK.BeginAccept(callBackMethod , SCK );
textBox1.Text = "Listening ...";
}
private void AcceptCallback(IAsyncResult ar)
{
Socket temp = ((Socket)ar.AsyncState);
worker = temp.EndAccept(ar);
AsyncCallback ReceiveMethod = new AsyncCallback(ReceiveCallBack);
worker.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None,ReceiveMethod , worker);
MessageBox.Show("Accept");
}
private void ReceiveCallBack(IAsyncResult ar)
{
Socket worker_ = ((Socket)ar.AsyncState);
int bytesReceived = worker_.EndReceive(ar);
string str = System.Text.UTF8Encoding.UTF8.GetString(buffer);
MessageBox.Show(str);
}
}
من عجله دارم
ممنون
بای