![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 08.08.2009
Сообщений: 3
|
![]()
Ребята!!!! Помогите, плиз! Коннект происходит, всё функции без ошибок выполняются а buff всёравно пуста... Чего не хватает???
Код Клиента: WSAStartUp(MakeWord(1,0),WSD); sock:=socket(PF_INET,SOCK_STREAM,IP PROTO_IP); if sock=invalid_socket then memo1.Lines.Add('SoCket error') else memo1.Lines.Add('SoCket Done'); SA.sin_family:=PF_INET; SA.sin_addr.S_addr:=INADDR_ANY; SA.sin_addr:=in_addr(d_addr('172.16 .178.190')); SA.sin_port:=htons(1100); ret:=connect(sock,SA,sizeof(SA)); if ret=socket_error then memo1.Lines.Add('Connect error') else memo1.Lines.Add('Connect done'); buff:='5512'; ret:=send(sock,buff,4,0); if ret=socket_error then memo1.Lines.Add('Send error') else memo1.Lines.Add('Send Done'); closesocket(sock); WSACleanUp; Код Сервера: assignfile(log,'log.txt'); rewrite(log); WSAStartUp(makeword(1,0),WSD); sock:=socket(PF_INET,SOCK_STREAM,IP PROTO_IP); if sock=invalid_socket then writeln(log,'Socket Error') else writeln(log,'Socket Done'); SA.sin_family:=PF_INET; SA.sin_addr:=in_addr(d_addr('172.16 .178.190')); SA.sin_port:=htons(1100); ret:=bind(sock,Sa,sizeof(sa)); if ret=Socket_Error then writeln(log,'Bind Error') else writeln(log,'Bind Done'); ret:=listen(sock,1); if ret=Socket_Error then writeln(log,'Listen Error') else writeln(log,'Listen Done'); sk:=accept(sock,nil,nil); if sk=Invalid_Socket then writeln(log,'Accept Error') else writeln(log,'Accept Done'); ret:=recv(sk,buff,4,1); if ret=Socket_Error then writeln(log,'Recv Error') else writeln(log,'Recv Done'); label1.Caption:=buff; closesocket(sock); WSACleanUp; closefile(log); заранее, спасибо ![]() |
![]() |
![]() |
![]() |
#2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Исходя из вашего кода, чтобы все заработало, у вас практически за очень короткое время одновременно должны вызываться accept у сервер и connect у клиента
![]() ну это я так быстро глянув на код, не смотрел детали вообщем. Edit 1 Извените, не дочитал вопрос ![]() Тогда не так Код:
Код:
Код:
Для получения recv - аналогично, только сначала SetLength(buff, 4) ![]() Последний раз редактировалось BOBAH13; 08.08.2009 в 17:40. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 08.08.2009
Сообщений: 3
|
![]()
BOBAH13, Спасибо тебе большое)) Теперь поняла)
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 10.08.2007
Сообщений: 9
|
![]()
Есть вопрос по поводу передачи сообщения, если мы изначально не знаем тип передаваемого сообщения, мы можем получить размер полученного буфера?
1) необходимо перевести сокет в неблокирующий режим ?№1 и новый вопрос, если я хочу обслуживать одним сервером 10000 клиентов подключенных одновременно это возможно, или нужно искать другие пути? ?№2 можно ли неблокирующий сокет перевести в поток? Последний раз редактировалось Siber_Dec; 24.02.2010 в 09:26. Причина: дополнение |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ftp клиент на winsock | sergoss | Работа с сетью в Delphi | 1 | 07.05.2009 19:07 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |
Многопользовательский сервер на Winsock | SirToxa | Работа с сетью в Delphi | 7 | 27.03.2008 15:29 |
Клиент-сервер-клиент | Кронос | Работа с сетью в Delphi | 3 | 24.08.2007 07:57 |