That is because Persian fonts are supported in Unicode, not ASCII or any other standard that your modem (or connected devices) may be supporting. It is not guaranteed that if you send Unicode data, it would be rendered the same on other side, unless that device also supports Unicode.
C# supports Unicode, char is a 2-byte UTF-16 Unicode code point (or unit). .NET framework supports it, and I believe both of the applications that you have written also are based on .NET framework. That leaves the methods for rendering the data. Are you using Console application? Console application doesn't support the glyphs (or the graphics; simply) to support most of the code points. That is why, when you use Persian scripts in Console application...
static void Main(string[] args)
{
Console.WriteLine("سلام");
}
????
Which is a proof for my claim, that although Unicode maybe supported, but, you need to read the manuals to understand how to print the Unicode characters in the application.
Read this article to understand a bit more on that:
Reading and writing Unicode data in .NET[
^]
For more on char type:
char (C# Reference)[
^]