我想将数据发送到远程服务器,我知道它的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();
}
答案 0 :(得分:2)
要打开套接字,您可以使用Socket
类型或TcpClient
类型(假设它是TCP)。 IP地址和端口在构造函数中指定。然后,您需要决定是否要使用Socket
API和NetworkStream
API来实际进行通信。如果您在Socket
上使用原始.Client
(TcpClient
),则使用Send
和Receive
方法(以及相关的异步选项) 。如果您更喜欢Stream
,那么.GetStream()
上的TcpClient
或new NetworkStream(socketInstance)
的{{1}}以及Socket
/ Read
。使用Write
,如果您需要简单的文本API,当然可以将其包装在Stream
/ StreamReader
中,但不清楚套接字API是文本还是二进制。你提到想要接收123-01234,但这可以用许多不同的方式编码,所以最终你需要非常清楚套接字API在字节级别所期望的内容。