System.Net.Sockets.Tcpclient.Connect出错<string hostname,=“”int32 =“”port =“”> </string>

时间:2014-03-20 06:51:11

标签: c# sockets tcp tcpclient

我正在尝试在我的控制台应用程序和PIC微控制器之间建立TCP连接。这里的行为很奇怪。有一段时间我能够连接,有时候不能。行为是完全随机的。下面给出了代码以及我得到的错误消息。

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Net.Sockets;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    TcpClient tcpclnt1 = new TcpClient();
                    Console.WriteLine("Connecting.....");

                    tcpclnt1.Connect("10.112.90.246", 13002);
                    // use the ipaddress as in the server program

                    Console.WriteLine("Connected");
                    Console.Write("Enter the string to be transmitted : ");

                    String str = Console.ReadLine();
                    Stream stm = tcpclnt1.GetStream();

                    ASCIIEncoding asen = new ASCIIEncoding();
                    byte[] ba = asen.GetBytes(str);
                    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]));

                    tcpclnt1.Close();
                }

                catch (Exception e)
                {
                    Console.WriteLine("Error..... " + e.StackTrace);
                }
            }

        }
    }
}

错误

enter image description here

enter image description here

enter image description here

消息错误

1 个答案:

答案 0 :(得分:0)

您正在使用IP地址而不是主机名,以字符串作为参数的Connect方法需要DNS主机名而不是IP地址:

public void Connect(string hostname, int port)
  

主机名

     

输入:System.String

     

远程主机的DNS名称   你打算连接。

使用主机名或method,其中IP为参数isntead 见Documentation