2 / 2 / 1
Регистрация: 10.03.2012
Сообщений: 28
1
.NET 4.x

Для "c_auth.ClientRequest" не определены параметры-типы и поэтому нельзя использовать аргументы-типы

14.06.2014, 13:35. Показов 1440. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи.

Делаю проект, но вылазит ошибка, а именно

Для "c_auth.ClientRequest" не определены параметры-типы и поэтому нельзя использовать аргументы-типы.
, а именно указывает вот сюда
VB.NET
1
ClientRequest(Of L2Client))
Вот сами пакеты,


PacketHandler

Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Public Class PacketHandler
    Private Shared m_instance As PacketHandler
    Public Shared ReadOnly Property Instance() As PacketHandler
        Get
            If m_instance Is Nothing Then
                m_instance = New PacketHandler()
            End If
 
            Return m_instance
        End Get
    End Property
 
    Private requests As New Dictionary(Of Byte, ClientRequest(Of L2Client))()
 
    Public Sub New()
        '  Me.register(&H0, New RequestAuthLogin())
        ' Me.register(&H2, New RequestServerLogin())
        'Me.register(&H5, New RequestServerList())
        'Me.register(&H7, New RequestAuthGameGuard())
    End Sub
 
    Private Sub register(code As Byte, cr As ClientRequest(Of L2Client))
        Me.requests.Add(code, cr)
    End Sub
 
    Public Function handle(client As L2Client, content As Byte()) As ClientRequest(Of L2Client)
        Dim id = content(0)
        If Me.requests.ContainsKey(id) Then
            Dim request = TryCast(Me.requests(id).Clone(), ClientRequest(Of L2Client))
 
            Return request.fill(client, content)
        Else
            Console.WriteLine("unk packet #" & id)
            Return Nothing
        End If
    End Function
End Class


L2Client

Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
    Public Class L2Client
    Inherits ClientConnection
    Private handler As PacketHandler
 
    Private loginCrypt As LoginCrypt
    Public blowfishKey As Byte()
    Public scrambledPair As ScrambledKeyPair
    Public sessionId As Integer
    ' Public account As model.Account
    Public awaitingId As Integer = -1
    Public login1 As Integer, login2 As Integer
    Public play1 As Integer, play2 As Integer
 
    Public Sub New(client As TcpClient, p As Long)
        Me.client = client
        Me.stream = client.GetStream()
        Me.networkId = p
        Me.handler = PacketHandler.Instance
        Me.sessionId = New Random().[Next](Integer.MaxValue)
 
        Dim crypts = CryptService.Instance
        '  Me.scrambledPair = crypts.getScrambledKeyPair()
        Me.blowfishKey = crypts.getBlowfishKey()
        Me.loginCrypt = New LoginCrypt()
        Me.loginCrypt.updateKey(Me.blowfishKey)
 
        Me.sendPacket(New SM_00_INIT(Me))
    End Sub
 
    Protected Overrides Sub disconnected()
        Console.WriteLine("client connection lost")
        If Me.awaitingId <> -1 Then
            AccountService.Instance.disconnected(Me)
        End If
    End Sub
 
    Protected Overrides Sub handlePacket(packet As Byte())
        If Not Me.loginCrypt.decrypt(packet, 0, packet.Length) Then
            Console.WriteLine("blowfish failed on . please restart auth server.")
        Else
            Dim request = Me.handler.handle(Me, packet)
            If request IsNot Nothing Then
                Console.WriteLine("<< " + request.[GetType]().Name & " size=" & packet.Length)
                    New Thread(New ThreadStart(request.executeMe)).Start()
            End If
        End If
    End Sub
 
    Public Sub sendPacket(cp As ClientPacket)
        cp.writeImpl()
        Dim data = cp.toArray()
        data = Me.loginCrypt.encrypt(data, 0, data.Length)
 
        Dim list As New List(Of Byte)()
        list.AddRange(BitConverter.GetBytes(CShort(data.Length + 2)))
        list.AddRange(data)
 
        Console.WriteLine(">> " + cp.[GetType]().Name & " size=" & list.Count)
        Me.stream.Write(list.ToArray(), 0, list.Count)
        Me.stream.Flush()
        list.Clear()
    End Sub
 
    Friend Sub setLoginPair(login1 As Integer, login2 As Integer)
        Me.login1 = login1
        Me.login2 = login2
    End Sub
 
    Friend Sub setPlayPair(play1 As Integer, play2 As Integer)
        Me.play1 = play1
        Me.play2 = play2
    End Sub
End Class


ClientRequest

Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Public MustInherit Class ClientRequest
    Implements ICloneable
    Public Property content() As Byte()
        Get
            Return m_content
        End Get
        Set(value As Byte())
            m_content = Value
        End Set
    End Property
    Private m_content As Byte()
    Private offset As Integer
    Public Property client() As L2Client
        Get
            Return m_client
        End Get
        Set(value As L2Client)
            m_client = Value
        End Set
    End Property
    Private m_client As L2Client
 
    Public Sub New()
    End Sub
 
    Public Function readD() As Integer
        Dim result As Integer = BitConverter.ToInt32(content, offset)
        offset += 4
        Return result
    End Function
 
    Public Function readC() As Byte
        Dim result As Byte = content(offset)
        offset += 1
        Return result
    End Function
 
    Public Function readH() As Short
        Dim result As Short = BitConverter.ToInt16(content, offset)
        offset += 2
        Return result
    End Function
 
    Public Function readF() As Double
        Dim result As Double = BitConverter.ToDouble(content, offset)
        offset += 8
        Return result
    End Function
 
    Public Function readB(Length As Integer) As Byte()
        Dim result As Byte() = New Byte(Length - 1) {}
        Array.Copy(content, offset, result, 0, Length)
        offset += Length
        Return result
    End Function
 
    Public Sub executeMe()
        
    End Sub
 
    Protected MustOverride Sub runImpl()
 
    Protected MustOverride Sub readImpl()
 
    Public Function Clone() As Object Implements ICloneable.Clone
        Return Me.MemberwiseClone()
    End Function
 
    Public Function fill(cn As L2Client, content As Byte()) As ClientRequest
        Me.client = cn
        Me.content = content
        Me.offset = 1
        Return Me
    End Function
End Class
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2014, 13:35
Ответы с готовыми решениями:

Невозможно вывести типы-параметры обобщённой подпрограммы Min (укажите типы-параметры явно)
type mas = array of real; var a: mas; max: real; i, y, n: integer; begin ...

Почему типы-параметры нельзя вывести в данном случае?
static class S { public static T2 Select&lt;T, T2&gt;(T source, Func&lt;T, T2&gt; f) =&gt; new T2; ...

Структуры, объединения и типы определены программистом
Создать структуру, которая содержит данные о геометрических фигурах: тип (круг, эллипс, квадрат,...

Когда использовать ссылочные типы, а когда использовать типы значений?
Как это определить?

9
Строитель
887 / 554 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
14.06.2014, 14:01 2
Лучший ответ Сообщение было отмечено RedRabbit как решение

Решение

попробуй вместо
VB.NET
1
ClientRequest(Of L2Client)
просто написать
VB.NET
1
ClientRequest
Добавлено через 2 минуты
потому что в классе ClientRequest должно быть так
VB.NET
1
Public MustInherit Class ClientRequest(Of T)
хотя бы чтобы можно было так писать
VB.NET
1
Private Sub register(code As Byte, cr As ClientRequest(Of L2Client))
1
2 / 2 / 1
Регистрация: 10.03.2012
Сообщений: 28
14.06.2014, 14:15  [ТС] 3
Спс большое! Еше может подсказать, как лучше сделать вот тут

VB.NET
1
2
3
4
5
6
7
8
9
10
11
Protected Overrides Sub handlePacket(packet As Byte())
        If Not Me.loginCrypt.decrypt(packet, 0, packet.Length) Then
            Console.WriteLine("blowfish failed on . please restart auth server.")
        Else
            Dim request = Me.handler.handle(Me, packet)
            If request IsNot Nothing Then
                Console.WriteLine("<< " + request.[GetType]().Name & " size=" & packet.Length)
                    New Thread(New ThreadStart(request.executeMe)).Start()
            End If
        End If
    End Sub
Выдает Синтаксическая ошибка вот тут
VB.NET
1
New Thread(New ThreadStart(request.executeMe)).Start()
0
Строитель
887 / 554 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
14.06.2014, 14:23 4
попробуй так
VB.NET
1
New Thread(AddressOf request.executeMe).Start()
1
2 / 2 / 1
Регистрация: 10.03.2012
Сообщений: 28
14.06.2014, 14:29  [ТС] 5
нет(( не помогло, скажи куда залить картинку, я залью, так лучше будет видно в чем проблема.
0
Строитель
887 / 554 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
14.06.2014, 14:31 6
прям сюда заливай

Не по теме:

если что то нажми кнопку ответить -> управление вложениями там дальше поймёшь



Добавлено через 1 минуту
какую ошибку выдаёт?
1
2 / 2 / 1
Регистрация: 10.03.2012
Сообщений: 28
14.06.2014, 14:31  [ТС] 7
ВОт
Миниатюры
Для "c_auth.ClientRequest" не определены параметры-типы и поэтому нельзя использовать аргументы-типы  
0
Строитель
887 / 554 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
14.06.2014, 14:33 8
я кажись понял.
вместо строки
VB.NET
1
New Thread(New ThreadStart(request.executeMe)).Start()
вставь это
VB.NET
1
2
Dim thread As New Threading.Thread(AddressOf request.executeMe)
thread.Start()
1
2 / 2 / 1
Регистрация: 10.03.2012
Сообщений: 28
14.06.2014, 14:37  [ТС] 9
Спасибо, помогло, но еше 1 вопрос, от этого смысл не поменяется?
0
Строитель
887 / 554 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
14.06.2014, 14:41 10
да не должно

Не по теме:

ну входе процесса будет видно)))

1
14.06.2014, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2014, 14:41
Помогаю со студенческими работами здесь

Предопределенные типы переменных. Простые типы данных. Пользовательские типы данных
Лабораторная работа №6. Тема: Предопределенные типы переменных. Простые типы данных....

Не использовать никакие типы данных для хранения чисел
Добрый день всем, есть программа на тему &quot;свойства делимости целых чисел&quot;. Написав на доске все...

Агрегативные типы данных. Аргументы командной строки
организовать запись(чтение) структурированной информации в файл(из файла), используя для управления...

Стоит ли использовать не стандартные типы данных для экономии памяти?
Всем привет! Прошу знатоков подсказать, стоит ли использовать для хранения данных в оперативной...

Почему нельзя использовать в операторе case переменные, которые определены как #define
Я не понимаю, почему Visual Studio ругается на строку с case в коде. Вроде все правильно. Если там...

Укажите типы и базовые типы выражений, если они существуют
Объявлены переменные: char c; int * pi; float ** ppf; Укажите типы и базовые типы выражений, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru