简单网络编程-TCP客户端示例
来源:互联网 发布:四驱车 知乎 编辑:程序博客网 时间:2024/06/05 03:02
http://blog.csdn.net/is2120/archive/2011/05/22/6438034.aspx
本示例展示了如何生成一个client socket,连接到一个 http server,并从 http server 上下载一个文件。
simple http client
一个简单的TCP CLIENT 程序流程:
1. 初始化 winsocklibrary
2. 创建一个IPPROTO_TCP_SOCKET套接字。(使用socket)
3. 通过gethostbyname() 和 gethostbyaddr() 获取主机信息
4. 使用我们创建的socket通过connect()连接到服务器
5. 通过send()、recv()收发数据直到tcp chat结束
6. 使用closesocket()关闭连接。
7. 释放资源:winsocklibrary。(使用 WSACleanup())
#include <cstdio>
#include <afx.h>
#include <winsock2.h>
//z 2011-05-22 16:39:41@is2120
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"MSVCRT")
int main()
{
WSADATA wsaData;
char strSrv[] = "www.vckbase.com";
int wsaret = WSAStartup(0x0101,&wsaData);
struct hostent* hp;
unsigned int addr;
struct sockaddr_in server;
char buff[512] = {'/0'};
int y = 0;
if (wsaret)
{
return -1;
}
SOCKET conn;
conn = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(conn == INVALID_SOCKET)
{
return -1;
}
if (inet_addr(strSrv) == INADDR_NONE)
{
hp = gethostbyname(strSrv);
}
else
{
addr = inet_addr(strSrv);
hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
}
if (hp == NULL)
{
closesocket(conn);
return -1;
}
//z 初始化 server 地址。
server.sin_addr.s_addr=*((unsigned long*)hp->h_addr);
server.sin_family=AF_INET;
server.sin_port=htons(80);
if(connect(conn,(struct sockaddr*)&server,sizeof(server)))
{
closesocket(conn);
return -1;
}
sprintf(buff,"GET %s/r/n/r/n","/image/mlogo.gif");
send(conn,buff,strlen(buff),0);
CFile f;
f.Open("c://c.gif",CFile::modeCreate | CFile::modeWrite);
while(y=recv(conn,buff,512,0))
{
f.Write(buff,y);
}
f.Close();
closesocket(conn);
return 0;
}
- 简单网络编程-TCP客户端示例
- Java TCP网络编程 - 最简单示例
- Java TCP网络编程 - 最简单示例
- 网络编程---TCP客户端
- TCP通信客户端简单示例
- Muduo 网络编程示例之一:五个简单 TCP 协议
- Linux网络编程(1)简单的TCP客户端
- linux 网络编程之最简单的tcp通信客户端
- TCP IP网络编程1 简单的回声服务器端、客户端
- 网络编程简单示例
- Linux TCP网络编程示例
- Linux TCP网络编程示例
- Linux TCP网络编程示例
- C# TCP 网络编程示例
- 网络编程之TCP客户端
- boost::asio TCP客户端编程示例
- boost::asio TCP客户端编程示例
- Unix网络编程学习笔记之第5章 TCP客户端/服务器程序示例
- 史上最强的程序员学习网站,JAVA,C#,C/C++
- 英文VS2010安装中文版MSDN文档方法
- oracle11g 导入数据时 ORA-20446 错误的 解决方案
- Understanding Haskell Monads
- 24 个很酷的 Linux/Unix 工具
- 简单网络编程-TCP客户端示例
- 组合问题
- android学习
- 最简单的更改网页状态栏上显示文字的代码
- 字符编码显示程序
- C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP)
- 关于 唱票软件以及系统的一个构思
- 差异
- android adapter 深刻分析