View Full Version : اتصال Telnet بین کلاینت و سرور
zero01
پنج شنبه 24 خرداد 1403, 15:56 عصر
سلام و درود
کلاینت با این خطای
system.net.sockets.socketexception (0x80004005): no connection could be made because the target machine actively refused it 192.168.1.50:4578 at system.net.sockets.tcpclient.connect(string hostname, int32 port)
مواجه میشود فایروال رو در سیستم کلاینت خاموش کردم اما درست نشد:متفکر:
وقتی برنامه سرور و کلاینت در یک سیستم اجرا شوند ارسال و دریافت دارند
کسی راه حلی داره؟
ROSTAM2
پنج شنبه 24 خرداد 1403, 16:42 عصر
سلام و درود
کلاینت با این خطای
system.net.sockets.socketexception (0x80004005): no connection could be made because the target machine actively refused it 192.168.1.50:4578 at system.net.sockets.tcpclient.connect(string hostname, int32 port)
مواجه میشود فایروال رو در سیستم کلاینت خاموش کردم اما درست نشد:متفکر:
وقتی برنامه سرور و کلاینت در یک سیستم اجرا شوند ارسال و دریافت دارند
کسی راه حلی داره؟
سلام
باید Port اتصال رو به فایروال معرفی کنی
مثل اتصال به وب اپلیکشن IIS در شبکه
https://www.aparat.com/v/c904ue8
zero01
پنج شنبه 24 خرداد 1403, 17:59 عصر
سلام
باید Port اتصال رو به فایروال معرفی کنی
مثل اتصال به وب اپلیکشن IIS در شبکه
https://www.aparat.com/v/c904ue8
مرسی مهندس
بعد من تو نرمافزار کلاینتم متغیر ایپی رو گذاشتم از خود سیستم بگیره
یعنی ممکنه بجای اینکه سیستم کلاینت به سرور ارسال کنه داره به هاست خودش ارسال میکنه🤔
باید ایپی و پورت سرور رو بهش بدم یعنی؟
ROSTAM2
پنج شنبه 24 خرداد 1403, 20:27 عصر
مرسی مهندس
بعد من تو نرمافزار کلاینتم متغیر ایپی رو گذاشتم از خود سیستم بگیره
یعنی ممکنه بجای اینکه سیستم کلاینت به سرور ارسال کنه داره به هاست خودش ارسال میکنه������
باید ایپی و پورت سرور رو بهش بدم یعنی؟
من تا الآن با Telnet کار نکردم: (فقط ی نمونه TCP Client/Server برای ارسال صدا از کلاینت ب سرور دانلود کردم ک اونم وقت نکردم کدشو بررسی کنم)
https://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8c.html
Test telnet communication on remote computer using VB.net? - Stack Overflow (https://stackoverflow.com/questions/9113632/test-telnet-communication-on-remote-computer-using-vb-net)
Use Sockets to send and receive data over TCP - .NET | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/sockets/socket-services)
ارسال فایل:
Sending Files using TCP - CodeProject (https://www.codeproject.com/Articles/32633/Sending-Files-using-TCP)
zero01
یک شنبه 27 خرداد 1403, 14:49 عصر
من تا الآن با Telnet کار نکردم: (فقط ی نمونه TCP Client/Server برای ارسال صدا از کلاینت ب سرور دانلود کردم ک اونم وقت نکردم کدشو بررسی کنم)
https://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8c.html
Test telnet communication on remote computer using VB.net? - Stack Overflow (https://stackoverflow.com/questions/9113632/test-telnet-communication-on-remote-computer-using-vb-net)
Use Sockets to send and receive data over TCP - .NET | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/sockets/socket-services)
ارسال فایل:
Sending Files using TCP - CodeProject (https://www.codeproject.com/Articles/32633/Sending-Files-using-TCP)
ایده های جالبی دارین آ مهندس
کلاینت: دوتا فرم مجزا دارم سرور هم همین طور
ولی سرور من فقط یک دستور رو اجرا میکنه یعنی برای هر فرم باید یک پورت مجزا تعریف کنم:متفکر:
zero01
یک شنبه 27 خرداد 1403, 14:52 عصر
یعنی اگه خلاصه بگم سرور چطوری تشخیص میده که کدام دستور برای کدام قسمت کلاینت هست؟ ( از هم تفکیک و اجرا کنه)
ROSTAM2
پنج شنبه 31 خرداد 1403, 17:13 عصر
یعنی اگه خلاصه بگم سرور چطوری تشخیص میده که کدام دستور برای کدام قسمت کلاینت هست؟ ( از هم تفکیک و اجرا کنه)
بر طبق IP هر کلاینت
کدوم قسمت کلاینت منظور چیه؟!
155825
zero01
جمعه 01 تیر 1403, 06:12 صبح
مثلا یک کلاینت فقط داریم با یک ایپی ثابت.مشکل من قسمت listener سرور هست وقتی که دستور کلاینت دریافت میکنه
که چجوری باید بفهمه ساب/فانکشن یک رو احرا کنه یا دو یا . . .تو مرحله تکبعدی گیر کردم
zero01
جمعه 01 تیر 1403, 06:14 صبح
یعنی کدام دستور کلاینت برای کدام قسمت سرور هست
و بالعکس
ROSTAM2
جمعه 01 تیر 1403, 12:07 عصر
مثلا یک کلاینت فقط داریم با یک ایپی ثابت.مشکل من قسمت listener سرور هست وقتی که دستور کلاینت دریافت میکنه
که چجوری باید بفهمه ساب/فانکشن یک رو احرا کنه یا دو یا . . .تو مرحله تکبعدی گیر کردم������
این بسته به دستوراتیه که خودت برای برنامه های کلاینت و سرور می نویسی
شبیه دستورات CommandLine در PowerShell یا Command Prompt
Mahmoud.Afrad
شنبه 02 تیر 1403, 02:07 صبح
برای هر دستور یک کد یا اسم یکتا در نظر بگیرید.
میتونید یک پروژه ایجاد کنید و این کدها و کلا داده های مشترک رو در اون قرار بدید و پروژه های کلاینت و سرور ازش استفاده کنند.
zero01
شنبه 02 تیر 1403, 08:41 صبح
استاد ظاهرا باید یه آموزش ارتباط گیری کلاینت و سرور ببینم فعلا از SQL بصورت موقت به Access کوچ کردم خیلی دلچسب نیست
تا الان توانستم این قسمت رو اجرا کنم ( درپست بعدی کد رو میذارم)
zero01
شنبه 02 تیر 1403, 08:46 صبح
155827
Private Function Load_Bank(x As String) As String Dim output_data As String = ""
DS.Reset()
con = New SqlConnection(strcon)
con.Open()
strsql = "select * from ConstructCivil where id=" & x & " "
DA = New SqlDataAdapter(strsql, con)
DA.Fill(DS, "ConstructCivil")
con.Close()
output_data &= DS.Tables("ConstructCivil").Rows(0).Item("TagType")
output_data &= DS.Tables("ConstructCivil").Rows(0).Item("ID")
Return (output_data)
End Function
Private Sub listen()
While StartServer
Dim cl1 As TcpClient
cl1 = sr.AcceptTcpClient
Dim ns1 As NetworkStream
ns1 = cl1.GetStream
Dim readbuffer(1024) As Byte
Dim readcount As Int32
Dim clientmess1 As String
readcount = ns1.Read(readbuffer, 0, readbuffer.Length)
clientmess1 = Encoding.UTF8.GetString(readbuffer, 0, readcount)
Dim Temp1 As String = Load_Bank(clientmess1)
Dim WriteBuffer(1024) As Byte
WriteBuffer = Encoding.UTF8.GetBytes(Temp1)
ns1.Write(WriteBuffer, 0, WriteBuffer.Length)
End While
End Sub
End Class
zero01
شنبه 02 تیر 1403, 09:01 صبح
کلاینت:
155828
Public Class UGCivil
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Dim myip = ipsabet ' آیپی سرور رو اینجا مینویسیم
' Dim myport As Int16
' Dim myip As IPAddress
' myip = Dns.Resolve(Dns.GetHostName).AddressList(0) 'اولین آدرس آیپی لیست رو یمذاره داخل متغیر
'myport = Convert.ToInt16(PortSabet)
Dim cl1 As New TcpClient 'design client
cl1.Connect(ipsabet.ToString, Portsabet)
Dim ns1 As NetworkStream
ns1 = cl1.GetStream 'get data from client and insert to ns
Dim WriteBuffer1(1024) As Byte
WriteBuffer1 = Encoding.UTF8.GetBytes(TextBox1.Text) ' برگشت به کلاینت
ns1.Write(WriteBuffer1, 0, WriteBuffer1.Length) ' برگشت به NS
Dim readbuffer1(1024) As Byte
Dim readcount1 As Int32 'count readbuffer
Dim servermess1 As String ' ذخیره دستور کلاینت
readcount1 = ns1.Read(readbuffer1, 0, readbuffer1.Length) ' طول رو میگیره و داخل ردکانت میذاره
servermess1 = Encoding.UTF8.GetString(readbuffer1, 0, readcount1) ' ترجمه و گرفتن و خواندن
RichTextBox1.Text = servermess1 & vbNewLine & RichTextBox1.Text ' آخرین پیام رو میذاره داخل ریچ تکست
End Sub
End Class
تا اتصال برقراره و همه چی اوکیه
ولی وقتی یه Button2 دوم داشته باشم لیستنر سرور یا کلاینت رو چجوری بنویسم
متغیر های باتن یک و دو رو اسم های جدا دادم اما باز این لیستنر بی وفا فقط کدهای باتن یک رو میخونه:لبخند: ( مشکل من همینه فقط)
_behnam_
شنبه 23 تیر 1403, 03:10 صبح
سلام.
همونطور که Mahmoud.Afrad فرمودن روش استاندارد اینه که شما برای هر دستوری ک میخواید اجرا کنید یک شناسه یکتا مشخص کنید.
مثلا اگر دستور message برای کلاینت ارسال شد ، کلاینت تشخیص میده که باید تابع Message() رو اجرا کنه.
روش کار اتصال TCP/IP اینجور هست که شما یک اتصال ایجاد میکنید بین سرور و کلاینت و بعد دادده ها رو ردوبدل میکنید.
بهتره از داده های نشانه گذاری شده استفاده کنید مثل JSON یا XML
یا اینکه اگر دوست دارید میتونید اتصال رو برقرار کنید داده هارو بفرستید و بعد قطع اتصال کنید.
یک لایبرری خوب هست که میتونید ازش استفاده کنید. برای افرادی که از VB6 مهاجرت میکنن به دات نت که Winsock رو برای دات نت پیاده کرده.
https://www.codeproject.com/Articles/11422/Winsock-NET
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.