资源简介
C++ Socket Http Post数据
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
//#pragma comment(lib“wsock32.lib“)
#define IPVER 4 //IP协议预定
#define MAX_BUFF_LEN 65500 //发送缓冲区最大值
typedef struct ip_hdr //定义IP首部
{
UCHAR h_verlen; //4位首部长度4位IP版本号
UCHAR tos; //8位服务类型TOS
USHORT total_len; //16位总长度(字节)
USHORT ident; //16位标识
USHORT frag_and_flags; //3位标志位
UCHAR ttl; //8位生存时间 TTL
UCHAR proto; //8位协议 (TCP UDP 或其他)
USHORT checksum; //16位IP首部校验和
ULONG sourceIP; //32位源IP地址
ULONG destIP; //32位目的IP地址
}IP_HEADER;
typedef struct tsd_hdr //定义TCP伪首部
{
ULONG saddr; //源地址
ULONG daddr; //目的地址
UCHAR mbz; //没用
UCHAR ptcl; //协议类型
USHORT tcpl; //TCP长度
}PSD_HEADER;
typedef struct tcp_hdr //定义TCP首部
{
USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
ULONG th_seq; //32位序列号
ULONG th_ack; //32位确认号
UCHAR th_lenres; //4位首部长度/6位保留字
UCHAR th_flag; //6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCP_HEADER;
//CheckSum:计算校验和的子函数
USHORT checksum(USHORT *buffer int size)
{
unsigned long cksum=0;
while(size >1)
{
cksum+=*buffer++;
size -=sizeof(USHORT);
}
if(size)
{
cksum += *(UCHAR*)buffer;
}
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);
}
int main(int argc char* argv[])
{
WSADATA WSAData;
SOCKET sock;
IP_HEADER ipHeader;
TCP_HEADER tcpHeader;
PSD_HEADER psdHeader;
char Sendto_Buff[MAX_BUFF_LEN]; //发送缓冲区
unsigned short check_Buff[MAX_BUFF_LEN]; //检验和缓冲区
const char tcp_send_data[]={“This is my homework of networtI am happy!“};
BOOL flag;
int rectnTimeOver;
if (argc!= 5)
{
printf(“Useage: SendTcp soruce_ip source_port dest_ip dest_port \n“);
return false;
}
if (WSAStartup(MAKEWORD(22) &WSAData)!=0)
{
printf(“WSAStartup Error!\n“);
return false;
}
if ((sock=WSASocket(AF_INETSOCK_RAWIPPROTO_IPNULL0WSA_FLAG_OVERLAPPED))==INVALID_SOCKET)
{
printf(“Socket Setup Error!\n“);
return false;
}
flag=true;
if (setsockopt(sockIPPROTO_IP IP_HDRINCL(char *)&flagsizeof(flag))==SOCKET_ERROR)
{
printf(“setsockopt IP_HDRINCL error!\n“);
return false;
}
nTimeOver=1000;
if (setsockopt(sock SOL_SOCKET SO_SNDTIMEO (char*)&nTimeOver sizeof(nTimeOver))==SOCKET_ERROR)
{
printf(“setsockopt SO_SNDTIMEO error!\n“);
return false;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17011 2008-06-24 20:27 发送tcp数据包\tcp\Debug\net.obj
文件 25600 2008-06-24 20:27 发送tcp数据包\tcp\Debug\tcp.pdb
文件 148480 2008-06-24 20:27 发送tcp数据包\tcp\Debug\vc60.idb
文件 77824 2008-06-24 20:27 发送tcp数据包\tcp\Debug\vc60.pdb
文件 6080 2008-06-24 20:27 发送tcp数据包\tcp\net.cpp
文件 3922 2008-06-24 22:30 发送tcp数据包\tcp\tcp.dsp
文件 531 2008-06-24 15:27 发送tcp数据包\tcp\tcp.dsw
文件 33792 2008-06-24 22:30 发送tcp数据包\tcp\tcp.ncb
文件 48640 2008-06-24 22:30 发送tcp数据包\tcp\tcp.opt
文件 913 2008-06-24 20:27 发送tcp数据包\tcp\tcp.plg
文件 108032 2008-07-04 09:20 发送tcp数据包\发送tcp数据包.doc
目录 0 2009-05-16 09:09 发送tcp数据包\tcp\Debug
目录 0 2009-05-16 09:09 发送tcp数据包\tcp
目录 0 2009-06-24 18:21 发送tcp数据包
----------- --------- ---------- ----- ----
470825 14
相关资源
- MFC程序开发之聊天室客户端+服务器源
- TCP一对多通信_基于MFC多线程
- tcp socket实现单进程单线程 高并发服务
- (转)VC老版主薄荷用VC++6.0写的TCP
- c语言tcp服务器端程序代码
- IP TCP UDP校验和计算
- MFC基于TCP/IP协议的聊天室源代码 (继
- 服务端Node.js和VC++程序间通过SOCKET通信
- mstcpip头文件
- MODBUS TCP SERVER 源码
- linux环境C语言tcp聊天室
- 基于mfc tcp 文件传输 源代码
- QICQ网络即时聊天服务器和客户端VC源
- 用C语言实现的TCP服务器与客户端源代
- 基于tcp的聊天程序c语言的
- C语言套接字编程TCP连接
- TCP/IP聊天室群聊MFC版
- tcp/ip源代码c语言实现
- vc++ tcp 客户端和服务器端
- MFC:Socket编程—TCP服务端和多个客户
- linux下网络编程TCP客户端和服务器端数
- Linux GTK 聊天室 MySql C语言聊天室
- mfc聊天程序,利用TCP/IP完成双向数据
- C# IOCP完成端口模型简单实用高效
- VC+MFC网络聊天工具详细设计.doc
- HJ212TCPServerMFC.rar(MFC HJ212TCP Socket服务
- 基于MFC的TCP调试助手源码
- C语言伪造TCP、UDP数据包.zip
- C语言编写的员工管理系统
- 基于C#写的TCP 客户端多线程处理源码
评论
共有 条评论