|
|
|
C# ผมมีปัญหาเกี่ยวกับการใช้งาน socket ในการรับส่งข้อมูลกับเครื่อง client? |
|
|
|
|
|
|
|
สวัสดีครับ คือผมไม่รู้และไม่เคยเรียนเกี่ยวกับพวก network เลยโง่มากๆเรื่องนี้
ผมเลยจะทดลองทำโปรแกรมรับส่งข้อมูลโดยใช้ socket แต่ผมติดปัญหาตรง เวลาเตรียมช่องทางรับข้อมูลจากเครื่อง Client ที่ผมเตรียมไว้ 5 เครื่อง
โดยใช้โค้ดนี้ socket .Listen(5); ทีนี้เมื่อเตรียมไว้ 5 ช่องผมก็ต้องให้ Client มัน Connect มาที่เซิฟเวอร์เรา 5 เครื่องใช่ไหมครับ
ในโค้ดฝั่งเซิฟเวอร์ผมใช้โค้ดนี้เป็นตัวรับ
Socket[] acctest = new Socket[5];
for(i=0;i<5;i++){
acctest = socket .Accept();
}
แต่มันติดปัญหาตรงที่ถ้าเกิดว่าเราจะให้เครื่อง Client มันเชื่อมต่อแค่ 3 เครื่อง มันจะไปค้างตรง acctest = socket .Accept();
ผมเข้าใจว่าฝั่งเซิฟเวอร์มันรอการ Connect จากเครื่อง Client เครื่องที่ 4 อยู่
ผมเลยอยากถามพี่ๆว่า ผมจะทำยังไงให้เครื่องเซิฟเวอร์มันรันต่อไปได้ถึงแม้จะมี Client แค่ 2 หรือ 3 เครื่อง
โค้ดฝั่งเซิฟเวอร์
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket .Bind(new IPEndPoint(IPAddress.Parse("***.***.*.**"), 2000));
socket .Listen(5);
Socket[] acctest = new Socket[5];
for (int i = 0; i < 5; i++)
{
acctest = socket .Accept();
}
โค้ดฝั่งเครื่อง Client
Socket sock= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("***.***.*.**"), 2000);
Socket .Connect(endPoint);
Tag : .NET, Win (Windows App), Console App, C#, VS 2017 (.NET 4.x), Windows
|
|
|
|
|
|
Date :
2018-04-13 05:22:59 |
By :
1206526422812560 |
View :
1661 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้ามองมุมกลับ คือให้ Client ทำงานดูละ
|
|
|
|
|
Date :
2018-04-14 23:00:08 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เครื่องที่อยู่เฉยๆ แล้วมีเครื่องอื่นมา connect เรียกว่า server
ส่วนเครื่องที่ ส่ง request ไปหาอีกเครื่อง เรียกว่า client
แยกการทำงานให้ ดี
คุณต้องให้เครื่อง client ติดต่อเข้ามายัง server ก่อน เพื่อที่เครื่อง sever จะส่ง หรือ รับข้อมูล ให้ได้
|
|
|
|
|
Date :
2018-04-15 05:04:47 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.
ถ้าทำที่ client
Code (VB.NET)
Socket[] acctest = new Socket[5];
ก็ไม่จำเป็น
2. client ทุกเครื่อง ย่อมรู้จัก IP ตัวเองเสมอ และสามารถส่งให้ server ได้ง่ายกว่าให้ server มานั่งเช็คว่ามีเครื่องไหนบ้างที่ connect อยู่
3. ให้มองมุมกลับที่ว่า ถ้าหากเราเขียนโปรแกรมที่ต้องเชื่อมกันเป็น1000 อย่าง store ของร้านใหญ่ๆดู ว่าจะผลักภาระแบบไหนดี
|
|
|
|
|
Date :
2018-04-15 17:10:53 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|