View Full Version : مشکل ارتباط یه طرفه
yavari
سه شنبه 05 تیر 1386, 13:09 عصر
سلام
من سعی دارم با ریموتینگ یه برنامه چت داشته باشم (از تایمر نمیخوام استفاده کنم !)
برا قسمت چت خصوصی از فرمم New ساختم
Dim pc As PrivateChat = New PrivateChat()
مشکل اینجاست که تا کاربر دوم جوابی به کاربر اول نده جز پیغام اول پیغام دیگه ای رو دریافت نمی کنه !
دقیقا اینجوریه که فرض کنید من براتون بفرستم "سلام" اگه جواب دادین شما ، مشکلی نداره برنامه ! اما اگه ارتباط یه طرفه بمونه یعنی چند تا مسج بذارم شما فقط اولی رو دریافت می کنید ! :ناراحت:
چه راهکاری میتونه مشکلمو حل کنه ؟ :متفکر: (خواهشا غیر از تایمر !)
با احترام
azmoodeh
سه شنبه 05 تیر 1386, 13:14 عصر
اون برنامه رو که بهش وصل میشید رو هم شما نوشتید؟؟ ظاهران مشکل از اون برنامست و اون باید حل بشه . مگه اینکه توی مستنداتش نوشته بشاه که این مشکل رو چجور میشه حل کرد
yavari
سه شنبه 05 تیر 1386, 13:45 عصر
اون برنامه رو که بهش وصل میشید رو هم شما نوشتید؟؟ ظاهران مشکل از اون برنامست و اون باید حل بشه . مگه اینکه توی مستنداتش نوشته بشاه که این مشکل رو چجور میشه حل کرد
سلام
متاسفانه ، اصلا متوجه نمیشم منظورتونو ! :ناراحت:
کدوم برنامه ؟ منظورتون سرورمه ؟
خودم نوشتم برنامه رو ! کجای کار منظورتونه ؟
ممنون
azmoodeh
سه شنبه 05 تیر 1386, 13:55 عصر
منظورم همون سرور(یا نرم افزار طرف دیگه کار ) هست.
manager
سه شنبه 05 تیر 1386, 15:14 عصر
سورس تون رو اگر می شه بذارید، ببینیم مشکل چیه !
yavari
چهارشنبه 06 تیر 1386, 13:39 عصر
سورس تون رو اگر می شه بذارید، ببینیم مشکل چیه !
سلام
کدای مرتبط اینا هستن !
این کد سمت سروره که مسجا رو میفرسته سمت کلاینت مزبور .
Public Sub SendPrivateMessage(ByVal clientObject As ChatMediator.IClientImplement) Implements ChatMediator.IMediator.SendPrivateMessage
Try
Dim strUsers() As String = clientObject.IUserName.Split("|"c)
Dim sender As String = strUsers(0)
Dim receiver As String = strUsers(1)
Console.WriteLine("-------------------Private chat section--------------")
Console.WriteLine("Sending private message from " + sender + " to " + receiver)
Console.WriteLine("Message: " + clientObject.IMessage)
Dim icc As IClientImplement
For Each icc In Me.clientsList
If icc.IUserName.CompareTo(receiver) = 0 Then
clientObject.IUserName = sender
Console.WriteLine("Sending private message to: " + icc.IUserName)
icc.ISendMessageTome(clientObject)
End If
Next
Console.WriteLine("-----------------------------------------------")
Catch ex As Exception
Console.WriteLine("An error occured. Error: " + ex.Message)
End Try
End Sub
همین که ایونت موردنظر رخ میده این سابروتین اجرا میشه تا از فرم چت خصوصی ، یه نمونه دیگه ساخته بشه !
Public Sub em_GetMessageFromOthersHandler(ByVal ici As IClientImplement)
Dim isAdded As Boolean = False
Me.iciClient = ici
Dim th As Thread = New Thread(New ThreadStart(AddressOf Me.GetMessageFromOtherClients))
th.Start()
Dim ide As IDictionaryEnumerator = Me.hsPrivateWindows.GetEnumerator()
While ide.MoveNext()
If ide.Key.ToString().CompareTo(Me.iciClient.IUserNam e) = 0 Then
isAdded = True
End If
End While
If Not isAdded Then
If Me.iciClient.IReceiverName.CompareTo(Me.txtUserNam e.Text) = 0 Then
Me.hsPrivateWindows.Add(Me.iciClient.IUserName, True)
Dim th1 As Thread = New Thread(New ThreadStart(AddressOf Me.OpenPrivateChatWindow))
th1.Start()
End If
End If
End Sub
Private Sub OpenPrivateChatWindow()
Dim pc As PrivateChat = New PrivateChat()
pc.Text = Me.txtUserName.Text + " is chatting with " + Me.iciClient.IUserName
pc.CallerNames = Me.iciClient.IUserName
pc.MyNames = Me.txtUserName.Text
pc.Messages = TempM
pc.AddText(Me.iciClient.IUserName, Me.iciClient.IMessage)
AddHandler pc.UserLeft, New PrivateUserLeft(AddressOf Me.RemoveFromPrivateList)
pc.ShowDialog()
End Sub
اینم در سطح PrivateChat نوشتم برا ارسال به سمت سرور !
Private Sub SendMessage()
Try
If Me.em Is Nothing Then
Throw New ApplicationException("Client Object Nothing.")
End If
Me.em.IMessage = Me.txtSendMessage.Text
Me.em.IReceiverName = Me.callerName
Me.em.IUserName = Me.myName + "|" + Me.callerName
If Me.im Is Nothing Then
Throw New ApplicationException("Remote proxy not set.")
Else
Me.im.SendPrivateMessage(Me.em)
Me.txtSendMessage.Text = String.Empty
End If
GetMessageFromOtherClients()
Catch ex As Exception
MessageBox.Show("Error occured in SendMessage: Message: " + ex.Message + " Statck trace: " + ex.StackTrace)
End Try
End Sub
یعنی با ریموتینگ نمیشه ؟!؟! :ناراحت:
ممنون از توجه تون
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.