![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Transfer a File using Sockets (TLS or non-TLS)Demonstrates how to two programs, one a socket writer and the other a socket reader, can transfer a file. The connection can be TLS or a regular non-encrypted TCP connection. Note: This example requires Chilkat v11.0.0 or greater.
LOCAL lnSuccess LOCAL loBdToSend LOCAL loSndSock LOCAL lnBUseTls LOCAL lnPort LOCAL lnMaxWaitMs LOCAL lnNumBytes LOCAL lnBBigEndian LOCAL loListenSock LOCAL loRcvSock LOCAL lnNumBytesComing LOCAL loBdReceived LOCAL lnMaxWaitMs lnSuccess = 0 * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * On the sending side, we'll load the file into a BinData object and send. * On the receiving side, we'll read from the socket connection into a BinData, and save to a file. * This example assumes the file is not crazy-large, and that the entire contents * can fit into memory. * (If the file is too large for memory, there are other ways to send. It just involves streaming or * sending the file chunk-by-chunk..) * This section of code is for the sender. loBdToSend = CreateObject('Chilkat.BinData') lnSuccess = loBdToSend.LoadFile("somePath/someFile.dat") * Assume success for the example... loSndSock = CreateObject('Chilkat.Socket') lnBUseTls = 1 lnPort = 5555 lnMaxWaitMs = 5000 lnSuccess = loSndSock.Connect("some_domain_or_ip.com",lnPort,lnBUseTls,lnMaxWaitMs) * Assume success for the example... * Tell the receiver how many bytes are coming. lnNumBytes = loBdToSend.NumBytes lnBBigEndian = 1 lnSuccess = loSndSock.SendInt32(lnNumBytes,lnBBigEndian) * Send the file data (sends the entire contents of bdToSend). lnSuccess = loSndSock.SendBd(loBdToSend,0,0) * Get an acknowledgement. lnSuccess = loSndSock.ReceiveInt32(lnBBigEndian) IF (lnSuccess = 0) THEN ? loSndSock.LastErrorText RELEASE loBdToSend RELEASE loSndSock CANCEL ENDIF * Did the receiver get the correct number of bytes? IF (loSndSock.ReceivedInt <> lnNumBytes) THEN ? "The receiver did not acknowledge with the correct number of bytes." RELEASE loBdToSend RELEASE loSndSock CANCEL ENDIF ? "File sent!" * ------------------------------------------------------------------------------------ * The code below is for the receiving side (running on some other computer..) loListenSock = CreateObject('Chilkat.Socket') lnSuccess = loListenSock.BindAndListen(5555,25) IF (lnSuccess = 0) THEN ? loListenSock.LastErrorText RELEASE loBdToSend RELEASE loSndSock RELEASE loListenSock CANCEL ENDIF * Get the next incoming connection * Wait a maximum of 20 seconds (20000 millisec) loRcvSock = CreateObject('Chilkat.Socket') lnSuccess = loListenSock.AcceptNext(20000,loRcvSock) IF (lnSuccess = 0) THEN ? loListenSock.LastErrorText RELEASE loBdToSend RELEASE loSndSock RELEASE loListenSock RELEASE loRcvSock CANCEL ENDIF * The sender will first send the big-endian integer for the number of bytes * that are forthcoming.. lnSuccess = loRcvSock.ReceiveInt32(lnBBigEndian) IF (lnSuccess <> 1) THEN ? loRcvSock.LastErrorText RELEASE loBdToSend RELEASE loSndSock RELEASE loListenSock RELEASE loRcvSock CANCEL ENDIF lnNumBytesComing = loRcvSock.ReceivedInt * Receive that many bytes.. loBdReceived = CreateObject('Chilkat.BinData') lnSuccess = loRcvSock.ReceiveBdN(lnNumBytesComing,loBdReceived) IF (lnSuccess <> 1) THEN ? loRcvSock.LastErrorText RELEASE loBdToSend RELEASE loSndSock RELEASE loListenSock RELEASE loRcvSock RELEASE loBdReceived CANCEL ENDIF * Acknowledge the sender by sending back the number of bytes we received. lnSuccess = loRcvSock.SendInt32(loBdReceived.NumBytes,lnBBigEndian) * Close the connection. lnMaxWaitMs = 20 loRcvSock.Close(lnMaxWaitMs) * Save the received data to a file. lnSuccess = loBdReceived.WriteFile("somePath/someFile.dat") * Assume success for the example... ? "File received!" RELEASE loBdToSend RELEASE loSndSock RELEASE loListenSock RELEASE loRcvSock RELEASE loBdReceived |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.