با سلامی دیگر و حال روز خوشتون امروز چون دیدم اصلا هیچ آموزش ساده و مبتدی برای شبکه کردن در سایت وجود نداره قصد دارم با شکل خیلی خیلی ساده
به شما یاد بدم چجوری میشه تحت شبکه یک متن را ارسال کرد.
(قدم به قدم کارهایی که میگویم را انجام دهید).
خب کار خیلی است ما به 2 برنامه مجزا نیاز داریم.
که یکی اسمش میشه Client و دیگری میشه Server
در اینجا Server به یک حالتی خدمات دهنده تبدیل میشه که به یک شکلی باید منتظر مشتری باشد
و Client در اینجا هم باید به دنبال Server بگرده و وصل بشه (مثل یک مشتری که میرود از فروشنده جنس تهیه کند)
Server
خب ما کارمان را با Server شروع میکنیم اول
برای این کار وارد vb6 شوید و بعد Ctrl+T را بزنید و به دنبال گزینه Microsoft Winstoc Control 6.0 بگردید
و اونو به صفحه اضافه البته با نام. مثلا TcpServer
در Form_Load صفحه این کد را اضافه کنید.
TcpServer.LocalPort=1000
TcpServer.Listen
خط اول میگه پورد 1000 را برای من باز کن
و خط دوم هم میگه چشم باز کردم
Winsocet یک رویدادی دارد به نام ConnectionRequest زمانيکه که درخواستي از طرف Client مي آيد رويداد ConnectionRequest اجرا مي شود . در اين رويداد ابتدا بايد چک کنيدکه حالت کنترل بسته باشد . اگر چنين نيست اتصال را قبل از پذيرفتن اتصال جديد ببنديد . سپس تقاضا را بر اساسپارامتر requestID مي پذيريم
If TcpServer.state <> sckClosed Then TcpServer.Close
TcpServer.Accept requestID
بعد از نوشتن کد اگر برنامه را ما اجرا کنیم اگر پیغامی نداد برنامه ارتباط ما با Client متصل است (البته هنوز الان Client را نگفتم)
حال یک دکمه بر روی صفحه بگذارید و این کد را درون آن قرار دهید
Tcpserver.SendData InputBox("Chat", , "سلام خوبی")
این کد اگر اتصال بر قرار باشد کلمه سلام را برای Client ارسال می کند.
خب در ادامه به هر حال اگر ما چیزی برای Client ارسال می کنیم بلخره آن بنده خدا هم می خواهد چیزی به ما ارسال کند. خب باید چه کار کنیم.
آهان
Winsocet یک رویدادی هم دارد به نام DataArrival که اگر پیغامی و دستوری به Server رسید این بخش میگه چکار کنم
خب شما یک تکس باکس بگذارید بر روی صفحه و در رویداد DataArrival در Winsocet این را بنویسید
Private Sub tcpserver_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
TcpServer.GetData strData
Text1.Text = strData
End Sub
توضیح:
خط اول که خودتون میدونی که فقط یک متغییر تعریف میکنه
حال در اینجا اگر داده ای برسد به سرور می رود داخل TcpServer.GetData که ما هم اونو پاس میدم به متغییر strData و این بنده خدا هم strData را که حاوی متن رسید از Client است میریزه تو تکس باکس.
تا اینجا سرور ما به صورت کامل در حد کوچک ساخته شد.
و اگر خواسته اید که برنامه را ببنید این کد را در Form_Unload بنویسید . چون خب نیست که پورت بعد از تمام شدن کارمان باز باشد.
Client
و اما میریم سر کلاینت
خب تا اینجا اگر همه ی کارها را مو به مو انجام دادید بریم سر کلاینت
نکته ای که باید اینجا بگویم این است که ساختار کد ها و نوشته Server و Client یکی است فقط در 2 جا فرق دارد و شما اولا با خیال راحت یک پروژه جدید باز کنید و عینا/دقیقا کد ها و اشیاها را در پروژه جدید کپی کنید
حال ان 2 جایی که باید تغییر بدهید این است
1. Client هیچ نیازی به ConnectionRequest ندارد
پس این کد را پاک کنید
If TcpServer.state <> sckClosed Then TcpServer.Close
TcpServer.Accept requestID
و اما 2. وقتی که برنامه باز میشود باید با سرور ارتباط برقرار کند
پس در صفحه Form_Load اون کدی را که نوشته اید پاک کنید و این کد را قرار دهید
TcpClient.RemoteHost = "127.0.0.1"
TcpClient.RemotePort = 1000
TcpClient.Connect
حالا این کد چی میگه. , (خط اول) میگه که آقا لطفا به IP سیستم 127.0.0.1 وصل شو . چون ما در اینجا برنامه ی ما در کامپیوتر دیگری اجرا نمیشه مجبوریم با IP سیستمی خودمون یعنی 127.0.0.1 وصل بشیم.
خط دوم هم که میگه اگر اون IP وصل شدی از طریق پورت 1000 باهاش ارتباط برقرار کن
و کد اخری هم میگه . خب وصل شو دیکه (لعنتی)
در اینجا به صورت کامل برنامه Client ما کامل تمام شد
حال از 2 برنامه خروجی بگیرید و بعد از ان اول از همه Server را اجرا و بعد Client
اکنون می توانید یک ارتباط ساده ای بدون باگ و خطا داشته باشید
(و در آخر هم اگر مشکلی داشته اید در هر موقع از سال مثلا 5 سال بعد از این پست من جواب شما را میدهم)
شادو پیروز و سربلند باشید.