Writing webget
void get_URL( const string& host, const string& path )
{
// cerr << "Function called: get_URL(" << host << ", " << path << ")\n";
// cerr << "Warning: get_URL() has not been implemented yet.\n";
TCPSocket socket;
const Address addr(host, "http");
socket.connect(addr);
const string request = "GET " + path + " HTTP/1.1\r\nHost: " + host + "\r\nConnection: close\r\n\r\n";
socket.write(request);
while (!socket.eof()) {
string reply;
socket.read(reply);
cout << reply;
}
socket.close();
}
TCPsocket的使用:
1.创建套接字(Socket):使用socket()函数创建一个套接字,指定地址族(通常是AF_INET或AF_INET6)和套接字类型(SOCK_STREAM用于TCP套接字)。
2. 绑定地址和端口(Bind):如果您正在创建服务器程序,则需要使用bind()函数将套接字与特定的IP地址和端口号绑定。这一步是可选的,但通常在服务器端进行。
3. 监听连接请求(Listen):如果您的程序是服务器端,接下来需要使用listen()函数开始监听连接请求。它指定服务器套接字可以排队等待连接请求的最大数量。
4. 接受连接(Accept):在服务器端,使用accept()函数接受客户端的连接请求。该函数会阻塞程序,直到有客户端连接进来。
5. 建立连接(Connect):如果您的程序是客户端,使用connect()函数连接到服务器。您需要提供服务器的IP地址和端口号。
6.发送和接收数据:一旦连接建立,服务器和客户端都可以使用send()和recv()函数来发送和接收数据。
7.关闭连接:当通信结束时,使用close()函数关闭套接字。
基本上,对于服务器端,使用顺序是socket() -> bind() -> listen() -> accept(),而对于客户端,使用顺序是socket() -> connect()。