PDA

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

یعنی با ریموتینگ نمیشه ؟!؟! :ناراحت:
ممنون از توجه تون