使用套接字将数据发送到远程服务器

时间:2018-04-26 13:17:08

标签: c# android

我想将数据发送到远程服务器,我知道它的IP地址和端口号。假设它是xxx.xxx.xx.xx,端口号是123.它适用于TCP。我想发送姓氏,电子邮件和主机名,其中主机名是我要给我的机器的新名称。服务器应该以键值的形式给我响应为123-01234。在这里,我不明白我将如何使用socket将数据发送到服务器。我只使用简单的字符串。我还有最后一个问题,我是否需要在其中制作服务器程序。

 public  void Connect(String server)
{
Int32 port = 123;
TcpClient client = new TcpClient(server, port);
string FNAME = "reet";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(FNAME);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
Console.WriteLine("Sent: {0}", FNAME);
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData);
stream.Close();
client.Close();
}

1 个答案:

答案 0 :(得分:2)

要打开套接字,您可以使用Socket类型或TcpClient类型(假设它是TCP)。 IP地址和端口在构造函数中指定。然后,您需要决定是否要使用Socket API和NetworkStream API来实际进行通信。如果您在Socket上使用原始.ClientTcpClient),则使用SendReceive方法(以及相关的异步选项) 。如果您更喜欢Stream,那么.GetStream()上的TcpClientnew NetworkStream(socketInstance)的{​​{1}}以及Socket / Read 。使用Write,如果您需要简单的文本API,当然可以将其包装在Stream / StreamReader中,但不清楚套接字API是文本还是二进制。你提到想要接收123-01234,但这可以用许多不同的方式编码,所以最终你需要非常清楚套接字API在字节级别所期望的内容。