Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Какие 2 последних параметра нужно указывать в WinNet.connect
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Alexander Shiryaev Alexander Shiryaev вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.01.2005
По умолчанию Какие 2 последних параметра нужно указывать в WinNet.connect - 04.01.2005, 05:57

Здравствуйте.

Какие 2 последних параметра нужно указывать в WinNet.connect ?

Это мой код:
Код:
VAR
    IPAddr: ARRAY 16 OF SHORTCHAR;
    sock: WinNet.SOCKET;

PROCEDURE client_connect;
    VAR res: INTEGER;
  peer: WinNet.sockaddr_in;
BEGIN
    HALT(126);
    peer.sin_family := WinNet.AF_INET;
    peer.sin_port := WinNet.htons(PORT_NUM);
    peer.sin_addr.S_un.S_addr := WinNet.inet_addr(IPAddr);
    
    sock := WinNet.socket(WinNet.AF_INET, WinNet.SOCK_STREAM, 0);
    IF sock < 0 THEN
  StdLog.String("error: WinNet.socket returns"); StdLog.Int(sock); StdLog.Ln;
  RETURN
    END;
    
    res := WinNet.connect(sock, ????, ????);

    ...

END client_connect;
WinNet interface:
Код:
DEFINITION WinNet ["MPR.dll"];

    IMPORT WinApi;

    ...

    PROCEDURE connect (s: SOCKET; VAR [nil] name: sockaddr; namelen: INTEGER): INTEGER;

    ...

END WinNet.

На Delphi всё это выглядит так:
Код:
uses WinSock

...

procedure client_connect(hWnd: HWND; var sock: integer; ipaddr: string);
var
  rc: integer;
  peer: sockaddr_in;
  pipaddr: pchar;
begin
  peer.sin_family := AF_INET;
  peer.sin_port := htons( PORT_NUM );
  pipaddr := pchar(ipaddr);
  peer.sin_addr.s_addr := inet_addr( pipaddr );

  sock := socket( AF_INET, SOCK_STREAM, 0 );
  if ( sock < 0 ) then
    begin
      MessageBox(hWnd, 'socket call error', 'RemoteSv.client_connect', MB_OK);
      exit
    end;

  rc := connect( sock, peer, sizeof( peer ) );
  if ( rc<>0 ) then
    begin
      MessageBox(hWnd, 'connect call error', 'RemoteSv.client_connect', MB_OK);
      exit
    end;

    ...

end;
Я не нашёл ни одного примера, если можете - дайте, пожалуйста, ссылку.
Ответить с цитированием
  (#2 (permalink)) Старый
Alexander Shiryaev Alexander Shiryaev вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.01.2005
По умолчанию 04.01.2005, 17:42

Так нужно делать?

res := WinNet.connect(sock, SYSTEM.VAL(WinNet.sockaddr, peer), SIZE(WinNet.sockaddr));
Ответить с цитированием
  (#3 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 04.01.2005, 18:07

может так
WinNet.connect(s.socket, SYSTEM.VAL(WinNet.Ptrsockaddr, SYSTEM.ADR(...)), SIZE((WinNet.sockaddr_in))
Ответить с цитированием
  (#4 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 04.01.2005, 18:14

http://www.delphikingdom.com/asp/talktopic...ount=10&pNo=180
- форум и много ссылок по теме.
Ответить с цитированием
  (#5 (permalink)) Старый
Alexander Shiryaev Alexander Shiryaev вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.01.2005
По умолчанию 05.01.2005, 00:15

Спасибо.

Нет, я там почти ничего не нашёл по теме, т.е. по системному программированию. Самое полезное, что я нашёл - http://www.oberon.ethz.ch/SYSTEM.html + Component Pascal Language Report.

Вот, ещё один вопрос: правильно ли вызывать WinNet.send так:
Код:
CONST
    CMD_DISCONNECT = 1002H;
    SZ_CMD = 4;

PROCEDURE client_send;
    VAR res, cmd: INTEGER;
BEGIN
    cmd := CMD_DISCONNECT;
    res := WinNet.send(sock, SYSTEM.VAL(WinApi.PtrSTR, SYSTEM.ADR(cmd)), SZ_CMD, {}); 
    IF res <= 0 THEN
  StdLog.String("error: WinNet.send returns"); StdLog.Int(res); StdLog.Ln;
  RETURN
    END;

    ...

END client_send;
?

Т.е. нужно отправить содержимое cmd (SZ_CMD байт)

Точнее: правильно ли это:
SYSTEM.VAL(WinApi.PtrSTR, SYSTEM.ADR(cmd))
?

WinNet interface:
Код:
DEFINITION WinNet ["MPR.dll"];

    IMPORT WinApi; 

    ...

    PROCEDURE send (s: SOCKET; buf: WinApi.PtrSTR; len: INTEGER; flags: SET): INTEGER;

    ...

END WinNet.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 05.01.2005, 13:23

С виду все нормально. Может тип данных в SYSTEM.ADR(x), x - должен быть BYTE или ARRAY OF BYTE
Ответить с цитированием
  (#7 (permalink)) Старый
Alexander Shiryaev Alexander Shiryaev вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.01.2005
По умолчанию 17.07.2005, 21:04

Исходники Blackbox-а открыли, я посмотрел - там есть модуль CommTCP, и в нём для работы с сокетами используется модуль Winsock, а не WinNet. И там всё немного по-другому.

А вообще мне нужно было сделать небольшую программу с использованием обычных (т.е. блокирующих) сокетов и без использования модулей Blackbox Framework, чтобы с помощью DevLinker.LinkExe получить компактный исполняемый файл (получился 8 килобайт).

Если кому интересно, вот сам модуль:
Код:
StdCoder.Decode ..,, ..tP,...3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
 hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
 7.2.s,cTh.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
 NbXmb.2.YtJk2EWL,,6.,U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708T,U..w.ohJ.,
 sUGpmWbBxhYhAbndMHT9NY6Mw.sQq2Y6cwB.0.lv2w,2iHE.0E.k84.86.QC18RdfQHfMf9R9v
 Q7ONb17.,.D,0.p.0.4.0EJYqVI.6.VQ.kIl.8Mtr.0E.6E2.c4E.k.0.e0.,6j3.O.o,AU32.
 gQAU8U.wNIU0KyBU.2..c4E.k.0.e0M.6YE.i.0E0E,i1ICAU4U.g3AUBU.Aj4k.0,0k5C.1c2
 EYD.3MoE71.zTHT8Ff8H9861OOlPGPvQfPJb9R19RRONdvCPM0PM0HOHVuHZ8J,tInuIdOFP89
 ,tJHfPbvP5vON767ON3PRD96pND,NEH1.Gom84rN1PM05uHRuIdO1HM09fQZvJbPMb8R1fQdPR
 V96v76VtCPM0HMNQejRgfhgo3Yx2Yl2avgV7.T8RFPNZ96v76XNArN1HM0PM0HMPT9Nf9P996v
 76XtCPM1H6Jn8I9O1HM0b8RZPN1PPJ76v76ZOF5uHZ8FPM0HM09XjJihIbUIcDxdAhc,pdv2YZ
 JimphjJbUAdCZe3xc3JevgV7AV7QijRgfJbUwedpBc9buH5uG98JPM0KIbGoRqk4aEf4Idqk2a
 kvCrkaIrCLu4KqmqmGKR0GVy2k4aUB6IZuH5OF7OJZOF,NFZfQTndGLtK4,78hOEZ86b9RZ1p7
 6b8RZPNQbUohu2Y7p7kIin4aEVKoXaIbqk2aktGLtK4RNN85,dCv76deIfOFr76b9RZ1Er2Yug
 5RP1HMFRGEKIt8rrQ8kRqk428.AdiBhoReoJCI3FdJ10Uu.M8rN1H.U7pcUwinBg7VV,,7JFOF
 RO1Hk2.u066cF18HbOFPM0HMFNuI90HMFZfQTnd.FtQdfQ69,NNZfQjWH,0rIqk2akWuYBAV3p
 7,NGRPO.iX7g,V0.CrY0pUGKmsQb96FdP1PP9fC,NEZeI1OK,tHB8658G1eIHdC,dE.,tCPUcI
 ZUIiZZipJiiRiUYeGh8,NOB96RPMPHEyKrmqw0mlyKrG5CLEGqmCqoqqkmKEGqoSqoGrt0mkuK
 m0GFuGF0mlWqk8rkCKuKKtCLEemIqk2aEf4YUAhu2Y7p7cIrV0,MO,dCv76VtC,tJFOGNOF,78
 D7AD76tND,dP1PPipoqpI0GH0GIuqk.,7Dv76DNCDN8,tHZ86FdP.qHESGLSmI0GWyIEaIbCII
 aqI0mWuIWiX7cI98JfeIR86RPM.2aMhV7g6sQH085in4ak4..5uPRfP9vMdvIdfQ4ae.QCEREt
 kR0mYuIE0rmKKtuqkqqme1..r76VvPZ9Rp76HeHUdU7o8AhiBgYZAp76jOOwBAhixfVZgYtCPM
 0HM1aEc83.buP5nmQbBEVK2k2aIXojnZCc9UUYe6h6k2C5kty4,dCvlfaKrUiQijRA9HISpou4
 oZEpcTBdChcIZZUwed,Q8wfHZeGhc,hdg22.aIc0JdyIeyojGpV0pIin4aU7AV7ltGbZ,66v76
 jOOUicHhOENOG7uLbuH5uG9GEGJY.aU3JCQ8EIcQ69kdkmAZvg,A,7ON3PRumW8LtyaGhgn3Zh
 xhYhCmGE4HK0mf.umfCpUSomGLa4qtGrW8Lt68HN8PM0HM0HMFRm4AV7.g60mdy49nRk4AVE,U
 CBgh7JTPE7fQrN1AVKVcxhnZiZphoJitJbUwed,uGoyqtG50Ju8rR0mtWqr8Lu0Jb4qqI5.h7B
 ,tHB86b8GTeIduEFOEg,AVjRhu2Y0x7kREV.MGBGzkmc99100.HsQFvPZ166pNDCJYy2F7Q9PN
 UYAZvg,ak2a2HuQH0sQb98VPN91AZUYe6h6k2AhiBgYFLCpjKLrumdypkGKm2Yug5j0koggoxf
 VZgY78b9OT1Uvg,A,THEe1HfP11RVp,11,t6,tJHfPU7NE78FZuLRuHROFrN1HU7MGojjRhUYe
 6h6k2MFZ1bWZBAF,69kbUdQbBU7EWMRUj78PvP71IadgV7M0HkWuYBk2akWm2A,HEoyqtUm76p
 NDSZi,SqmGLoyqtIgtphVhhZ3Zn3hj,M8U7sPUcxhnNNUX2YCBdARbBA,aU7lriKEG3U7ko.,d
 C.Ui2hTBgYljmqoCLuuph0niuph0niqk2aU7MFU7M0gcmVHlm68.N,y2.A,G2.THd68.Qag2YL
 BBUL,.EIa0M0KIb.HMF..9WUodVhBd0g,qU728.Q6gAin4M0h019NZfC,,UnVVZgYtLHfPrN1H
 U7IiZRiu2Y7p7kREV.MGBGzC59Xi.00.HMM7fQRtQHfPzeN1PPH9Pn96pVLdPEL03kRq.HM011
 EsyKtGLEenS00.F9RTfPb98b8GT0yKtAZdQbBU7AA.11,,H1Q5M0ZXUIbxsJ.Cqru42ZnZimhA
 QCY319NZ99,tIHeK988jOOR1umtkkkjM8HtCP.HMGIiZRiUQYU2aUYe6,A,9eQsIgAW0EKUD,i
 1A,7Wp,yaGFI.6BN76j0c9j0.Uc.ak2KIbg,a.kW665uPUvUBcE90sITvMLPNUCBghhAkRkVyK
 ru4qU3,.bWZlRqk42eG,EWaqtCqru4.I3Un,e1Ud.yYH,HsI7uLZOF5eJ,ND,7ArN1A,Qe3pd2
 3Yx22A,EVyIeWIEqHE8nRqUBM0V0.b8Of9R7vPjfP,78FvPjfC,NGR0A3EfEtKau.kRM030k2a
 IXoDUigA66.AVmVu.UiQichCEICLu85QCY3FvPjP8rN1Hk2akYcQ2YX..aU3JCQ8EI.m0w7kRU
 76FgCkrI8W0.f79,tJ.RtJ..23k2akWuYBM0.K2,tIF1sCPk4AVE,U1ZhjRiZRejRA91cJ.pVC
 ,k282.HeFu5K4RNNEEyId0WcQio,Ers6,NNZnd.H76B76CLu..UL,EsAZUY8.HcQcC.c959PTX
 nxhXNNWmtG5sQM8rN1AV7Ad4dQ2YX6A.M0KItkd.F,69kb.r,aU2lu.THd68.wag2YL,oZL,.w
 BF,AV7gcCN1A,U3FECIqkdkmQ5qU0,sIFPRd1WmdGojC3amRq.58PTvQ.qk2K2GooC5.gAi1I8
 .SJtaKuKKVaLuKqtGprCJu85e0HeH,7Sp761eIkbcEn8J9uC,dM9vNN76NPNRfC,NGUG76hOEZ
 mt.p,kIUBM0V0.bONR9NrN1ak2O385pVC,g,82U7Ad4dT.RNNEEG3U7ICI5.oZnhgi78b1sQ69
 CpgUiAc2Jec2jd2Yf2YWhAUg2YvhjdQbBk2akYcQ2Yx22.RtIUThcGJeDJeUYe6,A,9eQsIUcE
 tEKUD,i1A,7Wp,yaGFI.cBN76jOO.j0.UcM8M0HMFRm4M0.9WUQeZlRk4I6.bONR9NPM0kf8ro
 ..kRUG,kfCpUCJu440rRq.5uH66hPNZvQHvPR96v760HMcAVdAFuCPM0O3GqkGrkeHES3.Yc,Z
 e,RbBk285pVC,Z030Et66p,.kd.V98hPNZ1mGEGqkGbdQbBkYO22Yx6A,7J.HsRUoBAERqXIVB
 AV7gcAR8AV7...B0in4aU7Y6.cI23.0HK0GtKadgV7AV3p7PkW66CpU.Q5qUE,.QcghgVphp3i
 vg,HcJcQI5.Z0.Ad4tRA7.Y8U7ICI5SZitP.5068HN1H.q.22.sCq..MGRXvg,30kfCpUC36QP
 M090HePH1P..Q6sCPM030.C2k4a.Q6UBIc3x6MGaKuqkVmobCpWqk2CIqy4PMFR8F4ooW5.u2R
 N1PM0PM0HMAR76,isZjvNDsZDujTtXjuRTt,twTDw,jsLTtPDu9D6VTtXzwVTw,DvFD6PTt,7u
 XzvRzutztbTtZTwzD9,tvRTzZjvNzw,NvbjtPjv,dsrztrjs,jwtD67OOb1.K4,tvRTwLTt,7w
 ,TsRjwrD6XD6XjvJTtZjvNj9PM0HM1Iai2Y2Txz5YiDwk5wVrRJDu,dvlDu1jvJD6FTwT5.,dv
 ZDt9zutTvrTu,7vRDtbzutD6XD6ZDsJDuND6FTvZTtVDx9TuXjvNjCPM0H.7OFBOGROGdOGTeH
 ,NEH9S.6FgCr,HM0V0.900GIqqrG4cPp76.ZO8M0H...ZWU2ZhxB.N76ZPNe1.M1HkW...c93Q
 wdONlnVyKrGLtyKqmqm8rtumdGb1ZimZh2hgnRg.AS..oZ1xhi,6F9vQ59.CYiZiVlmQii.Z1.
 ..bf9.EWE.8D0E.E8E.k22.0..4E,5TeK4ZORNPNZvQRtIIepZBG20ksH3.bf9ZORNPNG20EtD
 .2.i8SU.sc6.,k,Z8.CLLC3b8Rn9P99F9vQ0ks,Uikwm46.Zz,,E.2.U6UOV.2.86.c918R.Y6
 2.7.,..Y22U,2.2.2YXK96.rc93kDza.AU.k.E.0.3gwP.0..I16.M.EJ.,U.2m,.,.E4WDN.N
 tarm3Wj.Jklb6.QcjpB..V6.,E...F.,.aU.EAjotYWhQI,AzJE.nT32XD3BdAAlA..4h0...
 --- end of encoding ---
(Если кто не знает - нужно вставить этот текст в окно в BlackBox-е, вставить коммандер Ctrl+Q перед StdCoder.Decode и щёлкнуть по нему мышкой)
Ответить с цитированием
  (#8 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 26.08.2005, 19:01

Необходимо использовать протокол IPX, но в модуел WinNet не хватает данных: NSPROTO_IPX и одной структры. Ну со структурой все понятно, экспортировать. А вот значение этой константы что-то не могу найти.
Ответить с цитированием
  (#9 (permalink)) Старый
Alexander Shiryaev Alexander Shiryaev вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.01.2005
По умолчанию 26.08.2005, 22:42

google говорит, что NSPROTO_IPX=1000

(http://cvs.sourceforge.net/viewcvs.py/ming...wsipx.h?rev=1.2)
Ответить с цитированием
  (#10 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 30.08.2005, 12:54

Дает ошибку 87 при создании сокета
socket:=WinSock.socket(WinSock.AF_IPX, WinSock.SOCK_DGRAM, WinSock.NSPROTO_IPX);
В чем может быть проблема? Может значения констант не те:
AF_IPX* = 6;
SOCK_DGRAM* = 2;
NSPROTO_IPX*=1000;
Ответить с цитированием
  (#11 (permalink)) Старый
Phinc Phinc вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.10.2004
По умолчанию 30.08.2005, 15:05

Ой, все заработала, когда заменила константу AF_IPX на 6.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все ли какие нужно игры запустятся на Windows 7? Harley Windows 7 11 23.08.2011 20:01
Покупка фотоаппарата, на какие параметры, при этом нужно обратить внимание? les.2007 Любые вопросы от новичков 17 14.04.2011 12:31
Не определяются USB порты. Какие нужно установить драйвера? vasi Любые вопросы от новичков 16 16.12.2009 21:39
Какие нужно выставить тайминги на оперативной памяти? kr1ogen Любые вопросы от новичков 4 15.01.2009 06:21
Какие компоненты и какой исходный код нужно использовать для создания игры Сапёр Byvaliy C++ Builder 7 03.12.2008 12:27
Нужно передать в качестве фактического параметра переменную типа TShiftState Lin@ C++ Builder 1 09.08.2006 17:44
Как указывать путь где хранится bmp файл Хочу быть программистом C++ Builder 9 17.05.2006 19:55
Какие библиотеки нужно юзать для работ Visual Studio и MSSQL Palmman MSSQL Server 0 03.11.2004 19:40
Какие кодировки страниц нужно выставлять, если делать странички чисто на английском feedbee DHTML, JavaScript, VBScript 0 19.06.2004 13:38
Bitmap->SaveToFile Необходимо указывать имя директории real C++ Builder 2 02.06.2003 17:15
Какие объявление нужно сделать в DLL, чтобы её можно было использовать в программах poroshock Visual C++ 1 12.02.2003 21:56



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов