相关疑难解决方法(0)

C#:如何使用套接字执行HTTP请求?

我正在尝试HTTP request使用套接字.我的代码如下:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class test
{
    public static void Main(String[] args)
    {
        string hostName = "127.0.0.1";
        int hostPort = 9887;
        int response = 0;

        IPAddress host = IPAddress.Parse(hostName);
        IPEndPoint hostep = new IPEndPoint(host, hostPort);
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        sock.Connect(hostep);

        string request_url = "http://127.0.0.1/register?id=application/vnd-fullphat.test&title=My%20Test%20App";
        response = sock.Send(Encoding.UTF8.GetBytes(request_url));
        response = sock.Send(Encoding.UTF8.GetBytes("\r\n"));

        bytes = sock.Receive(bytesReceived, bytesReceived.Length, 0);
        page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
        Console.WriteLine(page);
        sock.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我执行上面的代码时没有任何反应,而当我进入我request_url的浏览器时,我收到来自Snarl的通知,说 …

c# sockets

14
推荐指数
2
解决办法
3万
查看次数

如何使用Socket接收HTTP消息

我正在Socket为我的网络客户端使用课程.我无法使用,HttpWebRequest因为它不支持socks代理.所以我必须自己解析标题并处理分块编码.对我来说最困难的是确定内容的长度,所以我必须逐字节地读取它.首先,我必须使用ReadByte()查找最后一个标题("\ r \n\r \n"组合),然后检查正文是否具有传输编码.如果它,我必须阅读块的大小等:

public void ParseHeaders(Stream stream)
{
    while (true)
    {
        var lineBuffer = new List<byte>();
        while (true)
        {
            int b = stream.ReadByte();
            if (b == -1) return;
            if (b == 10) break;
            if (b != 13) lineBuffer.Add((byte)b);
        }
        string line = Encoding.ASCII.GetString(lineBuffer.ToArray());
        if (line.Length == 0) break;
        int pos = line.IndexOf(": ");
        if (pos == -1) throw  new VkException("Incorrect header format");
        string key = line.Substring(0, pos);
        string value = line.Substring(pos + 2); …
Run Code Online (Sandbox Code Playgroud)

.net c# sockets http

8
推荐指数
1
解决办法
1万
查看次数

如何从Socket的接收字节[]创建.NET HttpWebRequest类

我有一个接收HTTP请求的套接字.

所以我有一个来自socket的byte []形式的原始http请求.

我必须研究这个要求 - 但是

而不是重新发明轮子 - 我可以这个字节数组'转换成System.Net.HttpWebRequest或类似的东西吗?

-----更新---------

所以无论如何我找不到答案.通过进一步挖掘虽然我认为可以通过调用函数来完成:

HttpApi.dll 我认为HttpWebRequest使用这个dll(winxpsp2)

有趣的结构是HTTP_REQUEST

C++
typedef struct _HTTP_REQUEST {
  ULONG                  Flags;
  HTTP_CONNECTION_ID     ConnectionId;
  HTTP_REQUEST_ID        RequestId;
  HTTP_URL_CONTEXT       UrlContext;
  HTTP_VERSION           Version;
  HTTP_VERB              Verb;
  USHORT                 UnknownVerbLength;
  USHORT                 RawUrlLength;
  PCSTR                  pUnknownVerb;
  PCSTR                  pRawUrl;
  HTTP_COOKED_URL        CookedUrl;
  HTTP_TRANSPORT_ADDRESS Address;
  HTTP_REQUEST_HEADERS   Headers;
  ULONGLONG              BytesReceived;
  USHORT                 EntityChunkCount;
  PHTTP_DATA_CHUNK       pEntityChunks;
  HTTP_RAW_CONNECTION_ID RawConnectionId;
  PHTTP_SSL_INFO         pSslInfo;
}HTTP_REQUEST_V1, *PHTTP_REQUEST_V1;
Run Code Online (Sandbox Code Playgroud)

我刚刚开始使用C#所以钻研?? COM?编程是我的头脑.

通过讨论,我看不到'条目'(我的意思是简单的发送字节 - >接收HTTP_REQUEST).

安美居!如果有人想让我指向一些不错的WINDOWS KERNEL模式HTTP服务器,包括SSL,那么感觉自由它将是一个伟大的阅读和未来考虑的事情.

.net c# sockets httpwebrequest

7
推荐指数
2
解决办法
3985
查看次数

如何使用SharpPcap捕获HTTP数据包

我想捕获我的机器的所有传入HTTP数据包.要做到这一点,我使用的是SharpPcap,这是一个WinPcap包装器.

SharpPcap运行良好,但它捕获TCP数据包,这是太低的水平,无法做我想要的.有谁知道如何从所有这些TCP数据包中轻松获得完整的HTTP请求/响应?

谢谢

c# sniffing network-protocols sharppcap

7
推荐指数
1
解决办法
1万
查看次数

C#HTTP请求解析器

可能重复:
将原始HTTP请求转换为HTTPWebRequest对象

我有一个用C#编写的自定义HTTP服务器,它给我原始的HTTP请求...

GET /ACTION=TEST HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

我可以使用.NET框架中的某些东西来解析它,还是我必须手动完成?

干杯

.net c# http

4
推荐指数
2
解决办法
3万
查看次数