PDA

View Full Version : سوال: رفع مشکل سوکتهای همگام در این برنامه ویندوزی



Programmer 1
پنج شنبه 26 خرداد 1390, 00:54 صبح
سلام دوستان ،

مشکل این کد چیه ، اجرا میشه ولی اون چیزی نیست که من میخوام


public partial class Server : Form
{
public Server()
{
InitializeComponent();
}

static byte[] data = new byte[2048];
static Socket newSocket;

private void txtSend_Click(object sender, EventArgs e)
{
newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
newSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000));

ThreadStart ts = new ThreadStart(Listen);
Thread t = new Thread(ts);
t.Start();
txtSendAndRecievedMessage.Text = "Client: " + Encoding.ASCII.GetString(data);
}

static private void Listen()
{

newSocket.Listen(10);
Socket acceptedSocket = newSocket.Accept();
acceptedSocket.Receive(data);
}
}


من چون از سوکت های سنکرون برای ارتباط استفاده کردم برنامه سمت سرور تا زمانی که یک سوکت رو نپذیرفته هنگ میکنه و نمیشه هیچ کاری باهاش کرد ، میدونم که باید از سوکت های آسنکرون در سیستمهای مالتی تسک مثل ویندوز استفاده کرد ولی خوب من اومدم یک کاری کردم برای رفع این مشکل:
اومدم اون بخشی که باعث هنگ برنامه میشه (جایی که سوکت در حال گوش دادن هست) رو داخل یک متد گذاشتم و در یک ترید (thread) اجراش کردم ولی وقتی Trace گرفتم اصلا متد listen که باید توسط
ترید اجرا بشه ، اجرا نمیشه! و مستقیما میره خط بعدی دستورات .
بعد یک سوال ، دیگه اساسا سوکتهای سنکرون تو کجا کاربرد دارن؟!

لطفا راهنمایی کنید.