帮朋友写的一个利用winsocket发数据的两段代码.本指望可以通过socket来走低层一些的数据交互,没想到还是被封杀。没想到竟然直接检测socket.就没用这种思路往下做下去了;
不过这个过程中也对Winsocket有了一定了解;发出来给有需要的朋友;
计划是利用socket 走tcp协议,然后传输一个特定文件到服务器段,然后服务器段接受这个文件,整个过程有CRC32校验数据完整性,代码在内网测试是ok,的,外围一开始就被杀掉了。fuck.
其他不多说了。代码有详细解释。
发送端程序:
#include "stdafx.h"
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib,"ws2_32.lib") //必须引入的静态库 windows 系统会自带;
#define DEFAULT_PORT 5019 // 端口
#define SEND_BUFFER_LENTH 1024 //发送的buffer数据长度不包括crc32和length
#define REVE_BUFFER_LENTH 100 //服务端反馈过来的大小
int main(int argc, char **argv){
int again=1;
int msg_len=0;//发送实际len
int msg_reve_len = 0; //接受实际
//int addr_len;
struct sockaddr_in server_addr;
struct hostent *hp;
SOCKET connect_sock;
WSADATA wsaData;
//文件流
fstream walletFile;
//发送buffer
//长距离发送必须要做crc16验证 最后4byte 长度 和放crc16值 4byte
char sendBuffer[SEND_BUFFER_LENTH+8]={0};
char recvBuffer[REVE_BUFFER_LENTH]={0};
// 服务器名称 这个后续可以写上服务器的名字
//也可以直接指定IP
char *server_name = "localhost";
unsigned short port = DEFAULT_PORT;
unsigned int addr;
//打开一个文件 目标 二进制打开
walletFile.open("c:\\test.txt",ios::binary|ios::in|ios::out);
//先赋初值,清0