在套接字上写入具有延迟应答的服务器会导致套接字重新发送请求

时间:2011-01-11 09:26:10

标签: c# sockets compact-framework request .net-cf-3.5

我正在尝试向带有套接字类的服务器发送GET请求。 这是我的测试代码:

ConnectInternet();
String responseData = String.Empty;
String buffer = "GET /" + gLoginString + "/" + Command + "?winmob=" +
                ClassGlobalClass.VersioneJack + " HTTP/1.1";

if (SendHeader != null)
{
    buffer = buffer + "\nX: " + SendHeader;
}

buffer = buffer + "\n\n";

try
{

    Byte[] bytesSent = Encoding.ASCII.GetBytes(buffer);
    Byte[] bytesReceived = new Byte[256];
    Socket client = ConnectSocket("217.172.185.199", 5001);

    if (client == null)
        return ("Connection failed");

    // Send request to the server.
    client.Send(bytesSent, bytesSent.Length, SocketFlags.DontRoute);


    bool StopWhile = false;
    while (!StopWhile)
    {
        int bytes = 0;
        bytes = client.Receive(bytesReceived, bytesReceived.Length, 0);
        responseData = Encoding.ASCII.GetString(bytesReceived, 0, bytes);

        if (responseData != null & responseData != string.Empty)
        {
            StopWhile = true;
        }
    }
}

当我写这个袜子时,服务器在回答之前等待。这会导致C#发出另一个请求。我怎么能避免这个?

ps:我在Netcf3.5上

编辑:这是嗅探收到数据包时Netcat的输出

$ nc -l -p 5001
GET /Test/send?winmob=version HTTP/1.1
X: 24   XXXXXXXXXX      123      pass                        test 2

GET /Test/send?winmob=version HTTP/1.1
X: 24   XXXXXXXXXX      123      pass                        test 2

GET /Test/send?winmob=version HTTP/1.1
X: 24   XXXXXXXXXX      123      pass                        test 2

GET /Test/send?winmob=version HTTP/1.1
X: 24   XXXXXXXXXX      123      pass                        test 2

GET /Test/send?winmob=version HTTP/1.1
X: 24   XXXXXXXXXX      123      pass                        test 2

0 个答案:

没有答案