PDA

View Full Version : سوال: مشکل با سوکت ها



senaps
جمعه 18 شهریور 1390, 17:51 عصر
سلام....
پروژه ی اخر ترم من،در مورد سوکت ها و چند نخی هاست....برنامه رو نوشتم،خیلی هم ساده نوشته شده!!
ولی متاسافنه با این وجود،امکان برقراری ارتباط میان دو برنامه ی کلاینت و سرور وجود نداره!!!
ارور میده که تکست باکس(مقصد!)،توسط ترد دیگه ای ساخته شده!!:متعجب:
میخواستم ببینم اگر ممکنه،کسی میتونه راهنماییم کنه....
نمیدونم باید کد بذارم یا فایل،برا همین،هردوش رو میذارم!



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Windows.Forms;

namespace serverr
{
public partial class Form1 : Form
{
IPAddress ip;
IPEndPoint ipend;
Socket socket1, socket2;
Thread thredrec, thredacc;
public Form1()
{
InitializeComponent();
}
public void recmethod()
{
byte[] data = new byte[1024];
while (true)
{
socket2.Receive(data);
textBox2.AppendText(Encoding.ASCII.GetString(data) );
}

}
public void accmethod()
{
while (true)
{
socket2 = socket1.Accept();
thredacc = new Thread(new ThreadStart(recmethod));
thredacc.Start();

}
}

private void button1_Click(object sender, EventArgs e)
{
ip = IPAddress.Parse(textBox1.Text);
ipend = new IPEndPoint(ip, 5060);
socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket1.Bind(ipend);
socket1.Listen(3);
thredacc = new Thread(new ThreadStart(accmethod));
thredacc.Start();
}

private void button2_Click(object sender, EventArgs e)
{

}
}
}

senaps
یک شنبه 20 شهریور 1390, 14:07 عصر
دوستان،کسی راهنمایی نمیکنه؟

hjran abdpor
دوشنبه 21 شهریور 1390, 00:06 صبح
با سلام.
باید از Delegate استفاده کنید.

betisa
دوشنبه 28 شهریور 1390, 13:25 عصر
برای این کار میتونی از کد زیر استفاده کنی.




// creat handler
public delegate void ReceiveHandler(string data); //use in code
Invoke(new ReceiveHandler(ReceivData),Data);



به جای




textBox2.AppendText(Encoding.ASCII.GetString(data) );





و در ادامه



public void ReceivData(string data) { textBox2.AppendText(data); }