首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# TCP/IP自定义IP和端口

C# TCP/IP自定义IP和端口
EN

Stack Overflow用户
提问于 2015-07-22 01:38:46
回答 4查看 100关注 0票数 0

我在互联网上找到了下面的代码,我需要允许我的用户输入他们自己的IP地址和端口号,而不是硬编码。

我允许我的用户从两个单独的文本框中输入IP和端口。

代码语言:javascript
复制
            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’。

代码语言:javascript
复制
tcpclnt.Connect(syn_ip.Text, syn_port.Text);

提前感谢所有的帮助:) James。

EN

回答 4

Stack Overflow用户

发布于 2015-07-22 01:40:46

在这段代码中

代码语言:javascript
复制
tcpclnt.Connect(syn_ip.Text, syn_port.Text);

syn_port.Text是字符串类型,但应为整数。简单的解决方法是

代码语言:javascript
复制
tcpclnt.Connect(syn_ip.Text, int.Parse(syn_port.Text));

如果输入了除整数以外的任何值,这将在运行时抛出异常。相反,考虑更健壮的解决方案。

代码语言:javascript
复制
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 (作为一般实践),因此还要验证您在使用输入的代码中是否收到了一个整数。

票数 3
EN

Stack Overflow用户

发布于 2015-07-22 01:40:38

您需要将端口转换为整数值。

代码语言:javascript
复制
int port = Int32.Parse(syn_port.Text);
tcpclnt.Connect(syn_ip.Text, port);
票数 2
EN

Stack Overflow用户

发布于 2015-07-22 01:40:45

代码语言:javascript
复制
tcpclnt.Connect(syn_ip.Text, int.Parse(syn_port.Text));

您只需将端口string转换为int,如错误所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31545962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档