我在互联网上找到了下面的代码,我需要允许我的用户输入他们自己的IP地址和端口号,而不是硬编码。
我允许我的用户从两个单独的文本框中输入IP和端口。
try
{
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("Connecting");
tcpclnt.Connect(syn_ip.Text, 7878);
Console.WriteLine("Connected");
//String str=Console.ReadLine();x
Stream stm = tcpclnt.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes("data here");
Console.WriteLine("Transmitting.");
stm.Write(ba, 0, ba.Length);
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i]));
tcpclnt.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}它将允许我使用上面的内容发送数据,但我确实需要能够输入端口号。
当我尝试下面这样的代码时,我得到了以下错误:参数:无法从'string‘转换为'int’。
tcpclnt.Connect(syn_ip.Text, syn_port.Text);提前感谢所有的帮助:) James。
发布于 2015-07-22 01:40:46
在这段代码中
tcpclnt.Connect(syn_ip.Text, syn_port.Text);syn_port.Text是字符串类型,但应为整数。简单的解决方法是
tcpclnt.Connect(syn_ip.Text, int.Parse(syn_port.Text));如果输入了除整数以外的任何值,这将在运行时抛出异常。相反,考虑更健壮的解决方案。
int port;
bool ok = int.TryParse(syn_port.Text, out port);
if (ok)
{
tcpclnt.Connect(syn_ip.Text, port);
}
else // Some error message请注意,您还应该将UI修改为只允许输入整数。您也永远不应该信任UI (作为一般实践),因此还要验证您在使用输入的代码中是否收到了一个整数。
发布于 2015-07-22 01:40:38
您需要将端口转换为整数值。
int port = Int32.Parse(syn_port.Text);
tcpclnt.Connect(syn_ip.Text, port);发布于 2015-07-22 01:40:45
tcpclnt.Connect(syn_ip.Text, int.Parse(syn_port.Text));您只需将端口string转换为int,如错误所示。
https://stackoverflow.com/questions/31545962
复制相似问题