Socket没有从localhost接收数据

时间:2013-11-30 05:56:12

标签: c# sockets tcp tcplistener

我有c#代码连接到localhost ip地址127.0.0.1和端口号。 5939.连接完全正常,但没有收到任何数据。我希望它能够接收数据并将其保存到本地计算机上的文本文件中。

它是否没有接收数据,因为它位于localhost和同一台机器上,或者我的代码中有错误。

这是我的代码..

         byte[] data = new byte[1024];
         string input, stringData;
         String ip = "127.0.0.1";
         Int32 port = 5939;
         string path = "D://ipdata.text";

            if (File.Exists("D://ipsettings.txt"))
            {
                File.Delete("D://ipsettings.txt");
            }


            IPAddress ipad = IPAddress.Parse(ip);
            IPEndPoint ipend = new IPEndPoint(ipad, port);
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                sock.Connect(ipend);

            }
            catch (Exception ex)
            {
                throw ex;
            }
            try
            {
                int recv = sock.Receive(data);
                stringData = Encoding.ASCII.GetString(data, 0, recv);
                while (true)
                {

                    input = "Client here";
                    sock.Send(Encoding.ASCII.GetBytes(input));
                    data = new byte[1024];
                    recv = sock.Receive(data);
                    stringData = Encoding.ASCII.GetString(data, 0, recv);

                    string df = "";
                    try
                    {
                        System.IO.FileInfo fi = new System.IO.FileInfo(path);

我的程序没有在此行之后执行..

int recv = sock.Receive(data);

请帮助我摆脱这种情况。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

除非接收函数给你,否则你需要读取数据。

使用while循环来确定data是否可用。

        int recv=0;
        byte[] data = new byte[1024];

        StringBuilder sb= new StringBuilder();
        while ((recv=sock.Receive(data)) > 0)
        {
            sb.Append(Encoding.ASCII.GetString(data, 0, recv));
        }