Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > NET. Remoting


Автор: klyxa 13.8.2006, 15:24
народ у мну есть проьлемка, точнее я не знаю в чем ее суть:

Вобщем есть сервер и объект к нему, клиент пока не смотрю. Код взял из мсдна

Сервер:
Код

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class Server
{
    public static void Main(string[] args)
    {
        // Create the server channel.
        HttpServerChannel serverChannel = new HttpServerChannel(9090);

        // Register the server channel.
        ChannelServices.RegisterChannel(serverChannel);

        // Expose an object for remote calls.
        RemotingConfiguration.RegisterWellKnownServiceType(
            typeof(RemoteObject), "RemoteObject.rem", 
            WellKnownObjectMode.Singleton);

        // Wait for the user prompt.
        Console.WriteLine("Press ENTER to exit the server.");
        Console.ReadLine();
        Console.WriteLine("The server is exiting.");
    }
}


Объект:
Код

using System;
using System.Runtime.Remoting;

// Remote object.
public class RemoteObject : MarshalByRefObject
{
    private int callCount = 0;

    public int GetCount()
    {
        Console.WriteLine("GetCount was called.");
        callCount++;
        return(callCount);
    }

}


далее собираю все это дело типа:
csc /t:library /r:System.Runtime.Remoting.dll robj.cs
сsc /r:robj.dll /r:System.Runtime.Remoting.dll /target:winexe /out:server.exe server.cs

при компиляции выдается один ворнинг и усе. тыкаю в получившийся exe файл и... нифига, ничегон еоткрывает. указанный порт не биндится вобщем должного эффекту неть. Прошу помоущи у более Вумных людей чем ия

Автор: mr.DUDA 13.8.2006, 15:29
Цитата(klyxa @  13.8.2006,  15:24 Найти цитируемый пост)
ничегон еоткрывает. указанный порт не биндится вобщем должного эффекту неть.


1) код клиента - в студию
2) файрвол не блокирует 9090-й порт ?
3) а что собстна должно происходить, т.е. что подразумеваем под "должным эффектом" ? ну работает сервер, так это без клиента не проверишь же

Автор: klyxa 13.8.2006, 15:33
Код

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class Server
{
    public static void Main(string[] args)
    {
        // Create the server channel.
        HttpServerChannel serverChannel = new HttpServerChannel(9090);

        // Register the server channel.
        ChannelServices.RegisterChannel(serverChannel);

        Console.WriteLine("Press ENTER to exit the server.");
        Console.ReadLine();
     }
}


Так у меня все копилируется, запускается и фаервол показывает мол на 9090 порту висит какойто сервис, в предыдущем случае такова не проиходит

1) Он не нужен
2) Нет
3) Подразумеваю: Запуск(чтоб повисла консоль с надписью "Press ENTER to exit the server."). Мне пока этого хватит

Автор: mr.DUDA 13.8.2006, 15:51
Если с пом. csc.exe скомпилировать и запустить такую прогу (что первый, что второй вариант - одинаково), то на ReadLine у меня вылетает исключение InvalidOperationException "неверный дескриптор". Тот же текст компилирую в студии - оба варианта работают.

Автор: klyxa 13.8.2006, 15:57
а у мну если компилить в студии то вылетает ерор:

Error    1    The type or namespace name 'Http' does not exist in the namespace 'System.Runtime.Remoting.Channels' (are you missing an assembly reference?)


Автор: mr.DUDA 13.8.2006, 18:15
klyxa, нужно добавить референс на сборку System.Runtime.Remoting.dll

Автор: klyxa 13.8.2006, 19:41
омг, а можешь пример привести? а то в csc я знаю как, а тут.. ЗЫ ты кинь плз, а я пока док гляну

Добавлено @ 19:53 
аа, все нашел. спасиб запомощ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)