Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];

Вниз

много подключений с одного сокета   Найти похожие ветки 

 
tippa ©   (2010-04-25 18:47) [0]

Можно ли для одного сокета вызывать функцию connect несколько раз. Пока получается так, что при повторном вызове connect всегда возвращается ошибка. Создаю сокет, заполняю протокол, порт, адрес, подключаюсь:
TCP_sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
addr.sin_family:=AF_INET;
addr.sin_port:=htons(port1);
addr.sin_addr.S_addr := inet_addr(pchar(ip1));
connect(TCP_sock, @addr, sizeof(addr));

Затем меняю порт и адрес
addr.sin_port:=htons(port2);
addr.sin_addr.S_addr := inet_addr(pchar(ip2));

и снова подключаюсь
connect(TCP_sock, @addr, sizeof(addr));
Если в первый раз подключение прошло удачно - то во второй раз всегда ошибка. Получается, что при каждом новом подключении нужно пересоздавать сокет - как-то некрасиво получается?


 
DVM ©   (2010-04-25 19:05) [1]


> Получается, что при каждом новом подключении нужно пересоздавать
> сокет - как-то некрасиво получается?

нормально.


 
Anatoly Podgoretsky ©   (2010-04-25 19:29) [2]

> tippa  (25.04.2010 18:47:00)  [0]

А ты как думал.


 
tippa ©   (2010-04-25 19:44) [3]

Нас по физике так учили - мол все должно быть красиво. Вот и здесь думаю было бы красивее создать сокет при старте и до конца с ним работать - не сработало)


 
Anatoly Podgoretsky ©   (2010-04-25 20:28) [4]

> tippa  (25.04.2010 19:44:03)  [3]

Сработало, только ты пытаешься в один сокет втиснуть несколько.


 
RC   (2010-04-26 06:30) [5]

DisconnectEx + TF_REUSE_SOCKET


 
DVM ©   (2010-04-26 11:16) [6]

http://forum.sources.ru/index.php?showtopic=295714


 
RC   (2010-04-26 11:47) [7]

2 DVM

Там, по ссылке, вроде как какие-то проблемы с ней, которые так и не решили? Я DisconnectEx с TF_REUSE_SOCKET вполне успешно использовал на сервере, есть там кое-какие тонкости, но не смертельные. Выгода от неё на клиенте сомнительна, и я не пробовал, но MSDN прямо утверждает, что DisconnectEx + TF_REUSE_SOCKET можно использовать в паре с ConnectEx, прямо в описании и сказано.


 
bwwebm   (2010-04-27 13:06) [8]

А если изменить опцию SO_REUSEADDR сокета:

var
 bOpt: Bool;
...
 bOpt:=True;
 if setsockopt(hSocket, SOL_SOCKET, SO_REUSEADDR, @bOpt, SizeOf(Bool)) <> 0 then begin
   ShowMessage("opt error");
   Exit;
 end;



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.002 c
15-1381177802
Юрий
2013-10-08 00:30
2014.03.30
С днем рождения ! 8 октября 2013 вторник


4-1268982928
z2000
2010-03-19 10:15
2014.03.30
FileExists - дает диалог в XP


1-1323770413
ZeroDivide
2011-12-13 14:00
2014.03.30
Как установить RunParams в XE2 из эксперта (ToolsAPI)


2-1371650235
bergenion
2013-06-19 17:57
2014.03.30
Помогите создать класс


6-1272206861
tippa
2010-04-25 18:47
2014.03.30
много подключений с одного сокета





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский