Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 20:49   #1
rule-z
Evil is near...
Пользователь
 
Аватар для rule-z
 
Регистрация: 08.03.2009
Сообщений: 49
По умолчанию ClientSocket

Собственно попытался реализовать идею чата. Решил писать сам, и все создавалось на своих знаниях, которые получались в процессе создания.

Создал 2 приложения: сервер и клиент.

Запустил сервер. Подключился клиентом к серверу, прописав айпи и порт.
Отправил сервером клиенту сообщение. Клиент получил и показал его.

У меня всего 2 вопроса:

1) Как отправить сообщение наоборот к серверу?
2) Как сервером автоматически определить клиента?

Отправку я реализовывал посредством следующего кода:
Код:
ServerSocket1.Socket.Connections[1].SendText(sEdit1.Text);
Определение клиента мне важно, потому что хотелось бы сделать поддержку более 2х общающихся (не только клиент-сервер).

Через ClientSocket1.Socket.SendText(sEdit 1.Text)
Сообщение от клиента к серверу не приходит, и в клиенте выскакивает ошибка сокета 10051.

Помогите разобраться в чем проблема. Я в плане работы с сокетами - самоучка.
Программный код всего лишь слово, На свойстве Speak, я False пропишу.
Но помни, когда говорить захочешь снова,
В какое место вставить True я не скажу
rule-z вне форума
Старый 27.06.2011, 21:57   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
В какое место вставить True я не скажу
Да ты прямо партизан)
В какую дыру ты "вставил"
Код:
ClientSocket1.Socket.SendText
- уж тем более не скажешь , даже под пыткой)))
mss вне форума
Старый 27.06.2011, 22:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как отправить сообщение наоборот к серверу?
А почему бы клиента не снабдить серверным компонентом, но посадить его на другой порт? Это не единственное решение но иногда его применяют.
Цитата:
и в клиенте выскакивает ошибка сокета 10051.
Наверное потому что ты посылаешь сообщение не успев подключиться. ИМХО сообщение стоит посылать после отработки события OnConnect, или собственно говоря в нем самом.
I'm learning to live...
Stilet вне форума
Старый 27.06.2011, 22:05   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
сообщение стоит посылать после отработки события OnConnect
Не в OnConnect, а в OnWrite. Безо всяких "имхо".
mss вне форума
Старый 27.06.2011, 22:18   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Безо всяких "имхо".
Это кому как удобно. Я не любитель долгих коннектов, потому чаще всего после отсыла разрываю связь.
I'm learning to live...
Stilet вне форума
Старый 27.06.2011, 22:23   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Я не любитель долгих коннектов
А причем здесь "долгие коннекты" ?

Справку Борланд писал для Пушкина, да ?
Читать ее теперь не модно ?)

Черным же по белому написано в справке к OnWrite event (TCustomSocket):

Occurs when a client socket should write information to the socket connection.

Какие тут могут быть "имхи" ?)
mss вне форума
Старый 27.06.2011, 22:39   #7
rule-z
Evil is near...
Пользователь
 
Аватар для rule-z
 
Регистрация: 08.03.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Наверное потому что ты посылаешь сообщение не успев подключиться. ИМХО сообщение стоит посылать после отработки события OnConnect, или собственно говоря в нем самом.
Когда я подключился, а я подключился в самом начале, я могу все делать.
Я не стал обрывать каждый раз коннект. Пускай сидит подключенный.

В общем снабдил приложение и клиентом и сервером. Поставил настройку портов сервера клиента и адрес сервера. Все равно не хочет.
Программный код всего лишь слово, На свойстве Speak, я False пропишу.
Но помни, когда говорить захочешь снова,
В какое место вставить True я не скажу
rule-z вне форума
Старый 27.06.2011, 22:44   #8
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
я подключился, а я подключился
Враньё.
Ты не подключился.
mss вне форума
Старый 27.06.2011, 22:50   #9
rule-z
Evil is near...
Пользователь
 
Аватар для rule-z
 
Регистрация: 08.03.2009
Сообщений: 49
По умолчанию

Я прописал в начале на клиент и сервер Open;
Программный код всего лишь слово, На свойстве Speak, я False пропишу.
Но помни, когда говорить захочешь снова,
В какое место вставить True я не скажу
rule-z вне форума
Старый 27.06.2011, 22:56   #10
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
прописал в начале на клиент и сервер Open
"Прописывать" ты можешь что угодно кому угодно.
А в справке, которая писана для тебя, черным по белому написано, что фактом установления виртуальной петли соединения между клиентом и сервером является факт возникновения события OnConnect (на стороне клиента) и OnClientConnect (на стороне сервера).
И даже факт возникновения OnConnect на стороне клиента не дает полной гарантии того что клиент может в этот момент начать отправку сообщений партнеру по соединению.
Именно событи OnWrite (и никакое иное !) извещает клиента что он может начать отправку.

Последний раз редактировалось mss; 27.06.2011 в 22:59.
mss вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClientSocket AlexJan Компоненты Delphi 5 12.09.2010 08:08
ClientSocket misher Общие вопросы Delphi 2 09.07.2010 15:55
ClientSocket и ServerSocket Blood o men Работа с сетью в Delphi 2 25.11.2009 11:36
ClientSocket и TimeOut Powerfull100 Работа с сетью в Delphi 0 22.10.2009 12:29
Проблема с ClientSocket Shouldercannon Работа с сетью в Delphi 1 23.03.2009 14:45