A common misconception in socket programming is that "\n"
eq "\012" everywhere. When using protocols such as common
Internet protocols, "\012" and "\015" are called for
specifically, and the values of the logical "\n" and "\r"
(carriage return) are not reliable.
print SOCKET "Hi there, client!\r\n"; # WRONG
print SOCKET "Hi there, client!\015\012"; # RIGHT
Doesn't that apply here as well? Or only if you want to make sure you're script has to be super portable?
Liz | [reply] |
Well, yes and no. Mac, Win and Linux all use ASCII, which defines \n to be \012, if the document in question is in a non-ascii format, then a larger conversion than just lineends are probably needed anyway...
T
I
M
T
O
W
T
D
I
| [reply] [d/l] |
The ASCII table has no concecpt of '\n', that's from the C programming language.
ASCII defines linefeed as \012.
Unix uses a linefeed as the line terminator in text files, C denoted the linefeed, or new line code as \n. But when Unix was ported to other platforms, it became increasingly important to handle text files from other platforms, with different line terminator / line separator sequencecs.
--
TTTATCGGTCGTTATATAGATGTTTGCA
| [reply] |
From my experience writing a client / server application on Win2000 and AIX, your much beeter off using syswrite and sysread to communicate over the socket. This way you don't need to worry about the \n or \r when you transfer your data over the socket using print.
| [reply] |