Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > C# ผมมีปัญหาเกี่ยวกับการใช้งาน socket ในการรับส่งข้อมูลกับเครื่อง client?



 

C# ผมมีปัญหาเกี่ยวกับการใช้งาน socket ในการรับส่งข้อมูลกับเครื่อง client?

 



Topic : 130829



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



สวัสดีครับ คือผมไม่รู้และไม่เคยเรียนเกี่ยวกับพวก 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







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-04-13 05:22:59 By : 1206526422812560 View : 1661 Reply : 7
 

 

No. 1



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ถ้ามองมุมกลับ คือให้ Client ทำงานดูละ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-14 23:00:08 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : lamaka.tor เมื่อวันที่ 2018-04-14 23:00:08
รายละเอียดของการตอบ ::
คือให้เครื่อง sever เราไปขอการ Connect กับเครื่อง Client แทนหรอครับ
ส่วนเครื่อง Client ก็ให้ใช้คำสั่ง .Accept(); รอคำขอของเครื่อง sever ใช่ไหมครับ

ถ้าทำอย่างนั้นตรง IPEndPoint ผมก็ต้องรู้ว่าเครื่อง Client มัน IP อะไรก่อนสิครับ



ประวัติการแก้ไข
2018-04-15 04:38:56
2018-04-15 04:38:59
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-15 04:35:52 By : 1206526422812560
 

 

No. 3



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


เครื่องที่อยู่เฉยๆ แล้วมีเครื่องอื่นมา connect เรียกว่า server

ส่วนเครื่องที่ ส่ง request ไปหาอีกเครื่อง เรียกว่า client

แยกการทำงานให้ ดี

คุณต้องให้เครื่อง client ติดต่อเข้ามายัง server ก่อน เพื่อที่เครื่อง sever จะส่ง หรือ รับข้อมูล ให้ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-15 05:04:47 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

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
 


 

No. 5



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : lamaka.tor เมื่อวันที่ 2018-04-15 17:10:53
รายละเอียดของการตอบ ::
ผมอาจถามที่โง่ๆหน่อยนะครับ ผมไม่ค่อยรู้เรื่องนี้

คือผมไม่เข้าใจครับ ว่าสเราจะส่ง IP ไปให้เซิฟเวอร์ยังไงถ้าไม่ทำการ Connect กับตัวเซิฟเวอร์ หรือว่ามันทำการ Connect ได้โดยไม่ต้องใช้
.Accept(); ครับ พอจะช่วยอธิบายหน่อยได้ไหมครับ ขอโทษครับผมไม่รู้จริงๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-15 18:19:49 By : 1206526422812560
 


 

No. 6



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 5 เขียนโดย : 1206526422812560 เมื่อวันที่ 2018-04-15 18:19:49
รายละเอียดของการตอบ ::
ลองคิดแบบนี้

1. เรารู้รึปล่าวว่า server IP อะไร
2. รูปแบบการรับส่งข้อมูล ระหว่าง server กับ client เป็นยังไง ส่งอะไรไป หรือ รับอะไรมา
3. เปลี่ยนจากการส่งเป็นการรับ หรือเปลี่ยนจากรับเป็นการส่ง หรือเป็นการดึงข้อมูลจาก server ได้รึปล่าว

ของแบบนี้มันลองกันได้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-15 20:11:14 By : lamaka.tor
 


 

No. 7



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


https://medium.com/brenx/%E0%B8%AD%E0%B8%98%E0%B8%B4%E0%B8%9A%E0%B8%B2%E0%B8%A2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%97%E0%B8%B3%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A-network-%E0%B8%84%E0%B8%A3%E0%B9%88%E0%B8%B2%E0%B8%A7%E0%B9%86-%E0%B8%82%E0%B8%AD%E0%B8%87-%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B8%84-net-warrior-online-%E0%B8%9D%E0%B8%B1%E0%B9%88%E0%B8%87-server-2671dd1b7a45

ลองอ่านบทความนี้ดู ภาษาอาจจะไม่ตรงแต่หลักการวิธีการใช้ได้อยู่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-15 20:19:20 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# ผมมีปัญหาเกี่ยวกับการใช้งาน socket ในการรับส่งข้อมูลกับเครื่อง client?
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่