** form.init method ACTIVATE SCREEN CLEAR ON SHUTDOWN QUIT SET TALK OFF SET ECHO OFF with ThisForm .OleControl1.LocalAddress = "194.106.108.233" &&& your ip .OleControl1.LocalPort = 0 .OleControl1.Create() .OleControl1.RemoteNameAddrXlate = .T. .OleControl1.RemoteName = "pepe.online.ee" .OleControl1.RemotePort = 7 .OleControl1.Blocking = .F. .OleControl1.ConnectTimeout = 5 .OleControl1.object.Connect() endwith DO WHILE THIS.olecontrol1.state!=4 IF INKEY(0.5)=27 RETURN .F. ENDIF ? 'Connecting', THIS.olecontrol1.lasterrorstring ENDDO m.cBuffer = REPLICATE( CHR(0), 100 ) local dummyWait DO WHILE INKEY(.5)!=27 and THIS.olecontrol1.state=4 This.OleControl1.SendBuffer = m.CBuffer &&& you don't need CREATEBINARY THIS.OleControl1.object.Send() dummyWait = inkey(3) &&& waits 3 seconds to give some time to the send CStr = '' DO WHILE INKEY(.5)!=27 and THIS.olecontrol1.state=4 AND EMPTY(cStr) THIS.OleControl1.object.receive() cStr = this.olecontrol1.receivebuffer ? THIS.olecontrol1.lasterrorstring ENDDO ?'Received', len(cStr), cStr IF cStr!=m.cBuffer ?? 'Error' ELSE ?? 'OK' ENDIF ENDDO RETURN .F.>Jaime, thank yor for help. I tried to use your code and produces the following program. This program doesn't receive any data (receive buffer is empty):
>** form.init method >ACTIVATE SCREEN >CLEAR >ON SHUTDOWN QUIT >SET TALK OFF >SET ECHO OFF > >with ThisForm > .OleControl1.LocalAddress = "194.106.108.233" &&& your ip > .OleControl1.LocalPort = 0 > .OleControl1.Create() > .OleControl1.RemoteNameAddrXlate = .T. > .OleControl1.RemoteName = "pepe.online.ee" > .OleControl1.RemotePort = 7 > .OleControl1.Blocking = .F. > .OleControl1.ConnectTimeout = 5 > .OleControl1.object.Connect() >endwith > >DO WHILE THIS.olecontrol1.state!=4 > IF INKEY(0.5)=27 > RETURN .F. > ENDIF > ? 'Connecting', THIS.olecontrol1.lasterrorstring > ENDDO > >cBuffer = REPLICATE( CHR(0), 100 ) > >DO WHILE INKEY(.5)!=27 and THIS.olecontrol1.state=4 > THIS.olecontrol1.send( CREATEBINARY(m.cBuffer) ) > CStr = '' > * ?????????????????????????????????????????????????? > * The following loop will run infinitely. Why ? > DO WHILE INKEY(.5)!=27 and THIS.olecontrol1.state=4 AND EMPTY(cStr) > THIS.olecontrol1.receive(1) > cStr = this.olecontrol1.receivebuffer > ? THIS.olecontrol1.lasterrorstring > ENDDO > > ?'Received', len(cStr), cStr > IF cStr!=m.cBuffer > ?? 'Error' > ELSE > ?? 'OK' > ENDIF > ENDDO >RETURN .F. >>
>>with ThisForm >> .OleControl1.LocalAddress = "192.168.1.1" &&& your ip >> .OleControl1.LocalPort = 0 >> .OleControl1.Create() >> *** if you connect by ip address, you should do then >> .OleControl1.RemoteNameAddrXlate = .F. >> .OleControl1.RemoteAddress = "212.155.99.148" &&& other side's ip >> *** otherwise if you connect by name >> .OleControl1.RemoteNameAddrXlate = .T. >> .OleControl1.RemoteName = "www.eetasoft.ee" >> >> .OleControl1.RemotePort = 7 >> .OleControl1.Blocking = .F. >> *** now set a connection timeout, let's say 5 seconds >> .OleControl1.ConnectTimeout = 5 >> >> *** finally connect... >> .OleControl1.object.Connect() >>endwith >>>>Now, if you check ThisForm.OleControl1.State, it should really be 4 and then you can go on with the data transmissions.