Im trying to build a simple chat app... here is the code:
server
visual basic
code:--------------------------------------------------------------------------------
Public Class ChatServer
Public Sub New()
Try
Dim serversink As New BinaryServerFormatterSinkProvider
serversink.TypeFilterLevel =
Runtime.Serialization.Formatters.TypeFilterLevel.F ull
Dim clientsink As IClientFormatterSinkProvider
clientsink = New BinaryClientFormatterSinkProvider
Dim port As IDictionary
port = New Hashtable
port("port") = 6000
Dim channel As httpChannel = New httpChannel(port, clientsink,
serversink)
ChannelServices.RegisterChannel(channel)
RemotingConfiguration.RegisterWellKnownServiceType (GetType(RemoteChatObj), _
"RemoteChat", _
WellKnownObjectMode.Singleton)
Catch ex As Exception
Throw New ApplicationException("The remote object or the channel
could not be created", ex)
End Try
End Sub
End Clas
--------------------------------------------------------------------------------
I start the server by using dim server as new chatserver in my server
console app
Here is the remote object
visual basic
code:--------------------------------------------------------------------------------
Public Class RemoteChatObj
Inherits MarshalByRefObject
Implements IChat
Public Event evtReceiveText As IChat.MessageEventHandler Implements
IChat.MessageEvent
Public Sub Send(ByVal sender As String, ByVal message As String)
Implements IChat.Send
RaiseEvent evtReceiveText(sender, message)
End Sub
End Class
--------------------------------------------------------------------------------
the interface
visual basic
code:--------------------------------------------------------------------------------
Public Interface IChat
Sub Send(ByVal sender As String, ByVal message As String)
Delegate Sub MessageEventHandler(ByVal sender As String, ByVal message
As String)
Event MessageEvent As MessageEventHandler
End Interfac
--------------------------------------------------------------------------------
and finally the server:
visual basic
code:--------------------------------------------------------------------------------
Private Sub frmClient_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Dim channel As IChannel = New HttpChannel(666)
'ChannelServices.RegisterChannel(channel)
Try
dim iRemote as IChat
iRemote = CType(Activator.GetObject(GetType(IChat), _
"http://localhost:6000/RemoteChat"), IChat)
AddHandler iRemote.MessageEvent, AddressOf OnRecievedMessage
Catch ex As Exception
MessageBox.Show("Error")
End Try
End Su
--------------------------------------------------------------------------------
I get an error at the activator.GetObject line, and at the addhandler line
For some reason the remote object isn't creatted properly... I don't
understand...
The iRemote is of type transparentproxy when that getobject line has been
executed.. and then it fails at the addhandler line
I need urgent help on this now, it is being used in a demo for .net
remoting... Just my luck that the darned thing refuses to run..
The exception I get att the addhandler line is
"System.ArgumentNullException: No message was deserialized prior to calling
the DispatchChannelSink.
Parameter name: requestMsg
at
System.Runtime.Remoting.Channels.DispatchChannelSi nk.ProcessMessage(IServerChannelSinkStack
sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream
requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders,
Stream& responseStream)
at
System.Runtime.Remoting.Channels.BinaryServerForma tterSink.ProcessMessage(IServerChannelSinkStack
sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream
requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders,
Stream& responseStream)
at
System.Runtime.Remoting.Channels.Http.HttpServerTr ansportSink.ServiceRequest(Object state)
at System.Runtime.Remoting.Channels.SocketHandler.Pro cessRequestNow()
" String
Help please!!!
Henrik