views:

29

answers:

2

I am trying to build a WCF client for a Java Socket server which talks on a custom XML messages. I have created my own custom binding with MessageEncoder and netTCP transport.

Now what I have seen happen is on the first call to the server, server accepts the connection. However the server then waits for a specific XML packet. This is built into the method interface from client. WCF does not send the XML packet. Later WCF reports a timeout exception and the channel is faulted.

Will WCF netTCP transport work only with a WCF TCP Server?

Code:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IUserManager",     SessionMode=System.ServiceModel.SessionMode.Required)]

public interface IUserManager
{

[System.ServiceModel.OperationContract]
bool SendMessage(string strMessage);

[System.ServiceModel.OperationContract(IsInitiating = true, IsOneWay=true)]
void SendMessageOneWay(string strMessage);

}

I have created a SendMessageOneWay just to initiate the Socket connection. This did not work as well. As I need to reuse the socket, I have set Session.Required.

Please help

A: 

The WCF netTCP transport uses a custom TCP-based protocol; it is not a general purpose raw-TCP socket adapter.

Sounds like you will need to create your own custom transport channel. I created a list of resources on writing WCF channels a while ago (might be a bit out of date, but it should still be useful for getting started)

tomasr
A: 

Yes wcf using .net framing protocol which is not interoperable. http://blogs.msdn.com/b/drnick/archive/2009/01/19/message-framing-part-1.aspx

Sajay