joly,
The type of data really doesn't matter, because all the bytes will ultimately be sent as ASCII characters no matter how it's done. There are many ways to handle this, with the main determining factors being:
- Are you running LabVIEW on both ends (client and server)?
- Do you want to use a higher level (easier to program) method, or a lower level method?
If you're running LabVIEW on both ends, then the easiest thing is probably to use DataSocket. It's easier because it abtracts away the overhead of casting/flattening your data to strings and keeping track of how many bytes are being sent and received. Check out "DS Writer.vi" and "DS Reader.vi" in the Example Finder (Help >> Find Examples, then Networking >> Data Socket >> General).
If you don't want the overhead of DataSocket, then you can use the primitive TCP read and write functions in LabVIEW. To learn how, look at "Simple Data Server.vi" and "Simple Data Client.vi" (in Example Finder under Networking >> TCP & UDP). They are sending a 1D numeric array by casting it to a string first; one wrinkle for you is that you can't use "Type Cast" with a 2D array. So, you would have to replace that primitive with "Flatten to String" instead, and you'd have to replace the Type Cast on the receiving end with "Unflatten from String" that has a dummy 2D numeric array wired into its "type" input.
If you're not using LabVIEW on the receiving end, then you have to write some program in some other language to receive the byte stream that is sent and recast it into an array object in that language. If you have access to a DataSocket API in that other language, then DataSocket is again the way to go. If not, you'll have to avoid DataSocket and build the receiving-end code yourself.
Hope it helps,
John