purebasic.info

PureBasic forum
Текущее время: Пн окт 22, 2018 10:15 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Создание чата.
СообщениеДобавлено: Сб фев 25, 2017 11:24 am 
Не в сети
доцент

Зарегистрирован: Чт дек 08, 2016 5:32 pm
Сообщений: 25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
На днях задался вопросом:"Как создать чат,который может сохранять все сообщения?"Подскажите мне,как это осуществить?
Вот нашел одну тему по поводу чата,но там примеры сервера и клиента с ошибками:http://www.purebasic.info/phpBB3ex/viewtopic.php?p=12438


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Создание чата.
СообщениеДобавлено: Сб фев 25, 2017 2:14 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Сервер, при незначительных изменениях - клиент :roll:
Код:
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
InitNetwork()
Port.u = 7777
Dim Client(65536)
*buff = AllocateMemory(65536)
 
If CreateNetworkServer(0, Port, #PB_Network_TCP)
 
  Repeat
    Select NetworkServerEvent()
      Case #PB_NetworkEvent_Connect
        For i = 0 To 65535
          If Client(i) = 0
            Client(i) = EventClient()
            Break
          EndIf
        Next i
      Case #PB_NetworkEvent_Data
        For i = 0 To 65535
          If Client(i) = 0
            Break
          EndIf
          lenData.l = ReceiveNetworkData(Client(i), *buff, 65536)
          Debug PeekS(*buff, lenData)
          If lenData <> -1
            FillMemory(*buff, lenData)
          ElseIf lenData = -1
            FillMemory(*buff, 65536)
          EndIf
        Next i
      Case #PB_NetworkEvent_Disconnect
        For i = 0 To 65535
          If Client(i) = EventClient()
            Client(i) = 0
            Break
          EndIf
        Next i
    EndSelect
  ForEver
 
  FreeMemory(*buff)
  CloseNetworkServer(0)
EndIf



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Создание чата.
СообщениеДобавлено: Пн фев 27, 2017 9:26 pm 
Не в сети
доцент

Зарегистрирован: Чт дек 08, 2016 5:32 pm
Сообщений: 25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
А можете дать полный вид кода?Просто я не понимаю куда вставлять.Объясните,если можете.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Создание чата.
СообщениеДобавлено: Пн фев 27, 2017 10:47 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Да нет полного кода, вот, набросал для примера.
Код:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
InitNetwork()
 
Global Port.u = 7777
Global sms.s
Global Exit.b = 0
Global SMSData.s
Global Dim Client(65536)
 
Procedure Server(*s)
  *buff = AllocateMemory(65536)
 
  If CreateNetworkServer(0, Port, #PB_Network_TCP)
   
    Repeat
      If Exit = 1
        If *buff
          FreeMemory(*buff)
        EndIf
        CloseNetworkServer(0)
        ProcedureReturn
      EndIf
      Select NetworkServerEvent()
        Case #PB_NetworkEvent_Connect
          For i = 0 To 65535
            If Client(i) = 0
              Client(i) = EventClient()
              DisableGadget(2, 0)
              Break
            EndIf
          Next i
        Case #PB_NetworkEvent_Data
          For i = 0 To 65535
            If Exit = 1
              FreeMemory(*buff)
              CloseNetworkServer(0)
              ProcedureReturn
            EndIf
            If Client(i) = 0
              Break
            EndIf
            lenData.l = ReceiveNetworkData(Client(i), *buff, 65536)
            SMSData = PeekS(*buff, lenData)
            If SMSData <> ""
              AddGadgetItem(0, -1, SMSData)
              SMSData = ""
            EndIf
            If lenData <> -1
              FillMemory(*buff, lenData)
            ElseIf lenData = -1
              FillMemory(*buff, 65536)
            EndIf
          Next i
        Case #PB_NetworkEvent_Disconnect
          For i = 0 To 65535
            If Client(i) = EventClient()
              Client(i) = 0
              DisableGadget(2, 1)
              Break
            EndIf
          Next i
      EndSelect
    ForEver
  EndIf
EndProcedure
 
OpenWindow(0, 0, 0, 300, 230, "Server", #PB_Window_SystemMenu)
EditorGadget(0, 0, 0, 300, 100, #PB_Editor_ReadOnly)
EditorGadget(1, 0, 100, 300, 100)
ButtonGadget(2, 0, 200, 300, 30, "Отправить")
DisableGadget(2, 1)
CreateThread(@Server(), 0)
Repeat
  Event.l = WaitWindowEvent()
  If Event = #PB_Event_Gadget And EventGadget() = 2
    sms = GetGadgetText(1)
    If sms <> ""
      For i = 0 To 65535
        If Client(i) = 0
          Break
        EndIf
        SendNetworkData(Client(i), @sms, Len(sms))
      Next i
    EndIf  
  EndIf
 
  If Event = #PB_Event_CloseWindow
    Exit = 1
    Delay(500)
  EndIf
Until Event = #PB_Event_CloseWindow
End



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Создание чата.
СообщениеДобавлено: Вт мар 14, 2017 6:30 pm 
Не в сети
док

Зарегистрирован: Ср фев 23, 2011 5:16 am
Сообщений: 96
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Есть пример сервера многопоточного. Делал давно, реализовано в нем все. Пиши в ЛС. Поделюсь кодом.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB