繁体   English   中英

用C连接到远程主机(套接字编程)

[英]Connecting to Remote Host in C (Socket Programming)

我的问题很简单:我想从服务器发出HTTP GET请求。 我的客户端程序获取一个URL并将其发送到服务器程序。 我想知道如何使用此URL并针对从客户端输入的特定页面发出HTTP GET请求。

如果我解析URL以获得IP地址,则可以打开该IP地址的套接字,但是我将如何请求实际页面呢? 我是否将HTTP GET请求直接发送到该IP地址以及请求中的目录?

例如,如果我在Google搜索中搜索了“测试”一词,则会显示以下网址:

https://www.google.com/?gws_rd=ssl#q=测试

我的理解是,GET请求可能如下所示:

GET /?gws_rd=ssl#q=Test HTTP/1.1
Host: www.google.com

因此,如果我正确地理解了这一点,是否可以解析IP,打开套接字,然后直接将此GET请求发送到套接字?

最后,如果我尝试将上述网址之类的URL放入服务器代码中,将无法解析IP地址。 这意味着,如果我提出的请求比www.google.com之类的请求更复杂,我将不得不解析字符串并仅匹配主机。 除了使用正则表达式之外,是否有一种简单的方法来处理此问题? 我熟悉Python和C#的正则表达式,但是如果我可以通过不同的方式降低程序的复杂性,我想知道。

更新:我正在尝试将URL与POSIX正则表达式匹配,然后从中提取域名。 就这种实现令人难以置信的混乱而言,我运气不高。

是的,打开套接字后,您可以按照示例进行发送请求,并在RFC 2616中进行了描述。

如果您不想使用正则表达式或strchr来拆分您的URL,那么您也可以发送整个URL:

`GET http://www.google.com/?gws_rd=ssl#q=测试 HTTP / 1.1

`

但是,您仍然需要在URL中找到主机名,以调用诸如gethostbyname东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM