Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 03.11.2008, 23:10   #1
Conan Fedr
Нуждающийся
 
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений
(для 0 пользователей)
Клиент Сервер

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

Сервер
;Player
Type TConnection
 Field tcpstream%
 Field id%
End Type
;Listen Server on port 7777
tcpserv = CreateTCPServer(7777)
If tcpserv <> 0 Then
 Print "Listen Server Started!"
Else 
 Print "Listen Server start Failed!"
EndIf
While True
 connection_accept(tcpserv)
 read_sockets()
 Delay 40
Wend
Function connection_accept%(tcps%)
 Local tcpst%
 tcpst = AcceptTCPStream(tcps)
 If tcpst Then
  Print "New user connected"
  WriteLine (tcpst,"You connect") ;temp
  new_connect.TConnection = New TConnection
  new_connect\tcpstream = tcpst
  Delete new_connect
  Return tcpst
 Else
  Return 0
 EndIf
End Function
Function read_sockets()
 For consock.TConnection = Each TConnection
  If packet = ReadLine(consock\tcpstream)
   Print packet
   WriteLine(consock\tcpstream,"You message OK")
  EndIf
 Next
End Function
Клиент:
tcp = OpenTCPStream("127.0.0.1",7777)
If tcp Then
 Print "connected"
Else
 Print "not connected"
EndIf
While True
 If packet = ReadLine(tcp)
  Print packet
 EndIf
 Input Mesage$
 WriteLine(tcp,Mesage)
 Delay 25
Wend

Последний раз редактировалось Conan Fedr, 03.11.2008 в 23:19.
(Offline)
 
Ответить с цитированием
Старый 04.11.2008, 15:52   #2
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Клиент Сервер

Я могу ошибаться, но по-моему функция должна быть такой:

Function read_sockets()
 For consock.TConnection = Each TConnection
  If ReadAvail(consock\tcpstream)>0 Then
   packet = ReadLine(consock\tcpstream)
   Print packet
   WriteLine(consock\tcpstream,"You message OK")
  EndIf
 Next
End Function
И в клиенте:

tcp = OpenTCPStream("127.0.0.1",7777)
If tcp Then
 Print "connected"
Else
 Print "not connected"
EndIf
While True
 If ReadAvail(tcp)>0 Then
  packet = ReadLine(tcp)
  Print packet
 EndIf
 Input Mesage$
 WriteLine(tcp,Mesage)
 Delay 25
Wend
Если я правильно все понял...

ЮПД: Ах да, сервак ждет каждый раз нового клиента вроде. Ты должен записывать куда-нибудь указатель на поток )

Последний раз редактировалось Tadeus, 04.11.2008 в 16:04.
(Offline)
 
Ответить с цитированием
Старый 05.11.2008, 00:12   #3
Conan Fedr
Нуждающийся
 
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Клиент Сервер

Function connection_accept%(tcps%)
 Local tcpst%
 tcpst = AcceptTCPStream(tcps)
 If tcpst Then
  Print "New user connected"
  WriteLine (tcpst,"You connect") ;temp
  new_connect.TConnection = New TConnection
  new_connect\tcpstream = tcpst
  Delete new_connect
  Return tcpst
 Else
  Return 0
 EndIf
End Function
Так вот же вроде бы тут и записываю хендл потока в поле tcpstream .
Спасибо за функцию ReadAvail , но возникли проблема я подозреваю что что то я нето с типами делаю. потому что если с клиента слать что то на сервер реакции ноль как будто потока несуществует, посмотри пожалуйста правельно ли я с типом работаю пото му что подозрения что в поле типа ничего незаписывается , а в дебагере нет возможности проверить. Спасибо
(Offline)
 
Ответить с цитированием
Старый 05.11.2008, 15:34   #4
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Клиент Сервер

Возможно потому что тестируешь все на одном компе. Я тоже не смог TCP затестить на 1 машине.
(Offline)
 
Ответить с цитированием
Старый 05.11.2008, 15:59   #5
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Клиент Сервер

;Player
Type TConnection
 Field tcpstream%
 Field id%
End Type
;Listen Server on port 7777
tcpserv = CreateTCPServer(7777)
If tcpserv <> 0 Then
 Print "Listen Server Started!"
Else 
 Print "Listen Server start Failed!"
EndIf
While True
 connection_accept(tcpserv)
 read_sockets()
Wend

Function connection_accept%(tcps%)
 Local tcpst%
 tcpst = AcceptTCPStream(tcps)
 If tcpst Then
  Print "New user connected with IP"
  WriteLine (tcpst,"You connect") ;temp
  new_connect.TConnection = New TConnection
  new_connect\tcpstream = tcpst
  Return tcpst
 Else
  Return 0
 EndIf
End Function

Function read_sockets()
 For consock.TConnection = Each TConnection
  If ReadAvail(consock\tcpstream)>0 Then
   packet$=ReadLine$(consock\tcpstream)
   Print packet
   WriteLine(consock\tcpstream,"You message OK")
  EndIf
 Next
End Function
Вот уже сервак отсылает что сообщение дошло ) Ты забыл поставить знак $. А вот почему оно не читает - не совсем понятно )
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент ICQ Randomize Болтовня 16 04.07.2010 13:52
GNet(сервер-клиент) snikers BlitzMax 10 06.11.2009 18:44
j2me-клиент для общения в форуме abcdef Основной форум 13 21.01.2009 02:42
Структура Клиент-Сервер Delta_Q Алгоритмика 2 20.10.2007 14:24
Сервер. AnRee Болтовня 2 13.11.2006 18:52


Часовой пояс GMT +4, время: 20:51.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com