I have getting error when i run my TCP remote client from different computer.
NativeErrorCode : 10049
System.Net.Sockets.SocketException: The requested address is not valid in its co
ntext
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.StartListening(Objec
t data)
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupChannel()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(IDictionary pr
operties, IServerChannelSinkProvider sinkProvider)
at System.Runtime.Remoting.Channels.Tcp.TcpChannel..ctor(IDictionary properti
es, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider se
rverSinkProvider)
at SMB.FuelCard.FuelCardServiceProvider.Business.GenericWebFuelCardProvider.S
etTcpProperties() in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.fuelcardservicep
rovider\business\genericwebfuelcardprovider.cs:line 48
at SMB.FuelCard.FuelCardServiceProvider.Business.GenericWebFuelCardProvider.G
etFuelCardServerInstance() in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.fuelcar
dserviceprovider\business\genericwebfuelcardprovider.cs:line 64
at SMB.FuelCard.FuelCardServiceProvider.Business.GenericWebFuelCardProvider..
ctor() in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.fuelcardserviceprovider\bus
iness\genericwebfuelcardprovider.cs:line 25
at SMB.FuelCard.FuelCardServiceProvider.Business.CaltexFuelCardProvider..ctor
() in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.fuelcardserviceprovider\busines
s\caltexfuelcardprovider.cs:line 18
at SMB.FuelCard.FuelCardServiceProvider.Business.FuelCardProviderFactory.Orde
rFuelCard(FuelCardInformation obj) in c:\dev\buildarea\smb.fuelcard\smb.fuelcard
.fuelcardserviceprovider\business\fuelcardproviderfactory.cs:line 25
at SMB.FuelCard.FuelCardServiceProvider.Facade.FuelCardService.OrderFuelCard(
FuelCardInformation fuelCardInfo) in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.
fuelcardserviceprovider\facade\fuelcardservice.cs:line 23
at SMB.FuelCard.FuelCardServiceProvider.Facade.FuelCardService.Main(String[]
args) in c:\dev\buildarea\smb.fuelcard\smb.fuelcard.fuelcardserviceprovider\faca
de\fuelcardservice.cs:line 53
------------------------------------------------------------------------------------------------
Service is running on my computer locally.
The TCP Client works fine from my local computer but when i tried to run same (client) exe from other computer i get the above error.
I have tried
changing my DHCP from dynamic to static
Stopped Firewall software of Windows XP service pack 2
I have added my Client and Server side code, if there is any error i am doing please let me know.
Server Code:
private TcpChannel SetTcpProperties()
{
// It assigns the tcp TcpServerchannnel a "ws183" server name and 8085 port.
// need to add this due to issues with security and .net 1.1BinaryClientFormatterSinkProvider clientProvider =
null;BinaryServerFormatterSinkProvider serverProvider =
new BinaryServerFormatterSinkProvider();serverProvider.TypeFilterLevel =
System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props =
new Hashtable();props["bindTo"] = "10.0.0.155";
// GetIPAddressFromDNSName("fuelcardservice.***.local");props["port"] = 8085;
// need to add this due to issues with security and .net 1.1props["typeFilterLevel"] = TypeFilterLevel.Full;
return new TcpChannel(props,clientProvider,serverProvider);
}
/* It starts the Tcp Server.*/ public void startTcpServer(){
// Sets Tcpchannnerl Server PropertiesTcpChannel tsc = SetTcpProperties();
// Registering service to find over networkChannelServices.RegisterChannel(tsc);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(Business.FuelCardFactory) , // Specify Marshallable Class"FuelCardService" ,
// Specify Name of Marsha.WellKnownObjectMode.Singleton);
// It's very important while // using Tcp and Http connection. Using Singleton it maintains // the User objects while SingleCall doesn't stores the values.}
----------------------------
Client Code :
{
// need to add this due to issues with security and .net 1.1BinaryClientFormatterSinkProvider clientProvider =
new BinaryClientFormatterSinkProvider();BinaryServerFormatterSinkProvider serverProvider =
new BinaryServerFormatterSinkProvider();serverProvider.TypeFilterLevel =
System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props =
new Hashtable(); // props["name"] = System.Guid.NewGuid().ToString();props["bindTo"] = "10.0.0.155";
// IPAddress.Parse("ws183.smb.local").ToString(); // "10.0.0.155"; // GetIPAddressFromDNSName("fuelcardservice.smb.local");props["port"] = 0;
// this line gave me lot of troubleprops["typeFilterLevel"] = TypeFilterLevel.Full;
return new TcpChannel(props, clientProvider, serverProvider);}
/// <summary> /// It set Tcpchannel Properties, registered the channel, /// finds interface object and create instance of FuelCard (BP, Caltex) /// </summary> /// <param name="FuelCardName"></param> private void GetFuelCardServerInstance(){
IChannel[] obj = ChannelServices.RegisteredChannels;
if (!(obj.Length >=1)){
// Setting Tcpchannel PropertiesTcpChannel chan = SetTcpProperties();
try{
// It registers the Client to the TcpChannel so that it's // session is maintained.ChannelServices.RegisterChannel(chan);
WellKnownServiceTypeEntry wkste =
new WellKnownServiceTypeEntry(typeof(ICardOperation),"FuelCardService",
WellKnownObjectMode.Singleton);
RemotingConfiguration.RegisterWellKnownServiceType( wkste );
}
catch(Exception tcpException){
Console.WriteLine(tcpException.StackTrace);
}
}
// assiging ICardNumber interface object to access Server MethodsType typeofRI =
typeof(ICardOperation); // It gets the iCardOperation object from the second parameter given URI // parameter and first parameter specifies the interface file name. // Activator Creates a proxy for a currently running remote object, // server-activated well-known object, or XML Web service.iCardOperation = (ICardOperation)Activator.GetObject(typeofRI ,
"tcp://"+"10.0.0.155"+":8085/FuelCardService");
// IPAddress.Parse("ws183.smb.local").ToString()+":3111/FuelCardService"); // "10.0.0.155"+":3111/FuelCardService"); // GetIPAddressFromDNSName("fuelcardservice.smb.local")+":6123/FuelCardService"); if ( iCardOperation == null ){
Console.WriteLine("Interface file couldn't find :( ");
}
}
------------------------------------------------------
Would you please help/suggest me where i am going wrong. Any help or guidence really appreciated.
Regards,
Tejas M.

Having difficulty running TCP remote client from other computer
Ben Nevarez
It's look like .Net developers not have any issue in past with this type of problem :(.
If you have any suggestion please suggest to this thread.
Regards,
Tejas.