Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 套接字未从本地主机接收数据_C#_Sockets_Tcp_Tcplistener - Fatal编程技术网

C# 套接字未从本地主机接收数据

C# 套接字未从本地主机接收数据,c#,sockets,tcp,tcplistener,C#,Sockets,Tcp,Tcplistener,我有c代码,它连接到本地主机ip地址127.0.0.1和端口号5939。连接正常,但未接收任何数据。我希望它接收数据并将其保存到本地计算机上的文本文件中 它不接收数据是因为它在本地主机上并且在同一台计算机上,还是因为我的代码中有错误 这是我的密码 byte[] data = new byte[1024]; string input, stringData; String ip = "127.0.0.1"; Int32 por

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

它不接收数据是因为它在本地主机上并且在同一台计算机上,还是因为我的代码中有错误

这是我的密码

         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);
请帮我摆脱这种局面。
提前感谢。

除非接收功能给出提示,否则您需要读取数据

使用
while
循环确定
数据是否可用

        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));
        }

您的服务器是否会在连接启动后立即发送数据(如从您的代码中),或者需要向其发送一些命令?还要向套接字添加超时,这样它就不会无限期地等待。@bansi我不知道,先生,因为这是我自己机器的本地主机。.接收是一个块调用,将等待数据。您可以使用Socket.BeginReceive或ReceiveAsync,这是异步的。正如Bansi还提到的,您是如何将数据发送到此端点进行测试的?通过
服务器
我指的是您正在连接的应用程序。先生,我已经在我的代码中这样做了。请参阅我更新的帖子。@Adi:您在读取数据后正在使用while循环。但你需要使用while来确定,直到数据可用为止。检查我的答案并让我知道。