TCP-клиент WCF с сокетом Java на пользовательских сообщениях XML - PullRequest
1 голос
/ 05 октября 2010

Я пытаюсь создать клиент WCF для сервера Java Socket, который взаимодействует с пользовательскими сообщениями XML.Я создал свою собственную привязку с помощью MessageEncoder и транспорта netTCP.

Теперь я вижу, что при первом обращении к серверу сервер принимает соединение.Однако сервер затем ожидает определенный пакет XML.Это встроено в интерфейс метода от клиента.WCF не отправляет пакет XML.Позже WCF сообщает об исключении тайм-аута и сбое канала.

Будет ли транспорт WCF netTCP работать только с TCP-сервером WCF?

Код:

[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);

}

Я создалa SendMessageOneWay просто для инициирования соединения Socket.Это не сработало.Поскольку мне нужно повторно использовать сокет, я установил Session.Required.

Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Да, wcf использует протокол кадрирования .net, который не совместим.http://blogs.msdn.com/b/drnick/archive/2009/01/19/message-framing-part-1.aspx

1 голос
/ 05 октября 2010

Транспорт WCF netTCP использует собственный протокол на основе TCP; не универсальный адаптер сокетов raw-TCP.

Похоже, вам нужно будет создать свой собственный транспортный канал. Я создал список ресурсов для записи каналов WCF некоторое время назад (может быть, он немного устарел, но все равно будет полезен для начала работы)

...