// ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <WINSOCK2.H>
#include<Ws2tcpip.h>
#include <STDIO.H>
#include <time.h>
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char* argv[])
{
char recData[1024];
FILE* fp = NULL;
int my_port;
char my_ip[24];
printf("请输入端口号:");
scanf("%d",&my_port);
printf("port[%d]\n",my_port);
printf("请输入ip地址:");
scanf("%s", my_ip);
printf("ip: %s\n", my_ip);
fp=fopen("test.txt","rb");
if (fp == NULL)
{
printf("打开文件失败\n");
return 0;
}
WORD sockVersion = MAKEWORD(2, 2);
WSADATA data;
int len = 0;
int ret = 0;
unsigned long ul = 1;
if (WSAStartup(sockVersion, &data) != 0)
{
return 0;
}
SOCKET sclient = socket(AF_INET, SOCK_STREAM,0 );//IPPROTO_TCP
if (sclient == INVALID_SOCKET)
{
printf("invalid socket !");
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(my_port);
inet_pton(AF_INET, my_ip, &serAddr.sin_addr.S_un.S_addr);
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("connect error !");
char c = getchar();
closesocket(sclient);
return 0;
}
char sendData[1024];
for (;;) {
//设置非阻塞模式
int value = ioctlsocket(sclient, FIONBIO, (unsigned long *)&ul);
if (value == SOCKET_ERROR)
{
printf("set failed\n");
}
len = fread(sendData, 1, sizeof(sendData), fp);
printf("len =%d\n",len);
#if 0
strcpy(sendData, "POST / HTTP/1.1\r\n");
strcat(sendData, "cache - control: no - cache\r\n");
strcat(sendData, "Postman-Token: ff64cb7f-cf5a-429b-a234-6d328682a07d\r\n");
strcat(sendData, "User-Agent: AABB\r\n");
strcat(sendData, "Content-Type: application/x-www-form-urlencoded\r\n");
strcat(sendData, "Accept: */*\r\n");
strcat(sendData, "Host: 13.71.130.113:80\r\n");
strcat(sendData, "accept-encoding: gzip, deflate\r\n");
strcat(sendData, "content-length: 299\r\n");
strcat(sendData, "Connection: keep-alive\r\n");
strcat(sendData,"\n");
strcat(sendData,"terminal_id=302001017BT9901T005&macaddr=00%3A00%3A00%3A00%3A00%3A01&FWVer=1.11&Type=1&date=2018-04-04%2017%3A55%3A00&BatteryDisCharge=123&BatteryCharge=123&PowerCharge=123&PowerDisCharge=123&soc=12&BatteryRecycle=12&BatteryRemainkWh=123&BatteryVol=123&RunMode=1&RunStatus=1&ErrorCode=A13&Download=OK");
printf("%s\n",sendData);
#endif
if (len > 0) {
fseek(fp,0L,SEEK_SET);
send(sclient, sendData, len, 0); // 第一次发送
len = 0;
// 循环等待5s
for (int count = 0; count < 500;count++) {
ret = recv(sclient, recData, 255, 0);
printf("ret = %d\n",ret);
if (ret> 0)
{
recData[ret] = '\0';
printf("%s\n",recData);
Sleep(10*60*1000-5000);//10分钟
break;
}
Sleep(10);//10ms
printf("run……%d\n",count);
}
printf("ret=%d\n",ret);
// 三次重传机制10s一次
if(ret < 0){
for (int i = 0; i <3000; i++) {
if (i % 1000 == 0) {
printf("-------------------------------------------------------%d\n",i%1000);
send(sclient, sendData, len, 0);
}
if ((ret = recv(sclient, recData, 255, 0)) > 0)
{
printf("%d s 已收到数据 ret[%d]\n",i*10/1000, ret);
Sleep(10 * 60 * 1000-i*10);//10分钟
break;
}
Sleep(10);// 10ms
printf("run……%d\n",i);
}
if (ret < 0)
Sleep(10*60*1000-35*1000);
}
}
}
closesocket(sclient);
fclose(fp);
fp = NULL;
WSACleanup();
printf("输入任意按钮……\n");
char ch = getchar();
return 0;
}
//
#include "stdafx.h"
#include <WINSOCK2.H>
#include<Ws2tcpip.h>
#include <STDIO.H>
#include <time.h>
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char* argv[])
{
char recData[1024];
FILE* fp = NULL;
int my_port;
char my_ip[24];
printf("请输入端口号:");
scanf("%d",&my_port);
printf("port[%d]\n",my_port);
printf("请输入ip地址:");
scanf("%s", my_ip);
printf("ip: %s\n", my_ip);
fp=fopen("test.txt","rb");
if (fp == NULL)
{
printf("打开文件失败\n");
return 0;
}
WORD sockVersion = MAKEWORD(2, 2);
WSADATA data;
int len = 0;
int ret = 0;
unsigned long ul = 1;
if (WSAStartup(sockVersion, &data) != 0)
{
return 0;
}
SOCKET sclient = socket(AF_INET, SOCK_STREAM,0 );//IPPROTO_TCP
if (sclient == INVALID_SOCKET)
{
printf("invalid socket !");
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(my_port);
inet_pton(AF_INET, my_ip, &serAddr.sin_addr.S_un.S_addr);
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("connect error !");
char c = getchar();
closesocket(sclient);
return 0;
}
char sendData[1024];
for (;;) {
//设置非阻塞模式
int value = ioctlsocket(sclient, FIONBIO, (unsigned long *)&ul);
if (value == SOCKET_ERROR)
{
printf("set failed\n");
}
len = fread(sendData, 1, sizeof(sendData), fp);
printf("len =%d\n",len);
#if 0
strcpy(sendData, "POST / HTTP/1.1\r\n");
strcat(sendData, "cache - control: no - cache\r\n");
strcat(sendData, "Postman-Token: ff64cb7f-cf5a-429b-a234-6d328682a07d\r\n");
strcat(sendData, "User-Agent: AABB\r\n");
strcat(sendData, "Content-Type: application/x-www-form-urlencoded\r\n");
strcat(sendData, "Accept: */*\r\n");
strcat(sendData, "Host: 13.71.130.113:80\r\n");
strcat(sendData, "accept-encoding: gzip, deflate\r\n");
strcat(sendData, "content-length: 299\r\n");
strcat(sendData, "Connection: keep-alive\r\n");
strcat(sendData,"\n");
strcat(sendData,"terminal_id=302001017BT9901T005&macaddr=00%3A00%3A00%3A00%3A00%3A01&FWVer=1.11&Type=1&date=2018-04-04%2017%3A55%3A00&BatteryDisCharge=123&BatteryCharge=123&PowerCharge=123&PowerDisCharge=123&soc=12&BatteryRecycle=12&BatteryRemainkWh=123&BatteryVol=123&RunMode=1&RunStatus=1&ErrorCode=A13&Download=OK");
printf("%s\n",sendData);
#endif
if (len > 0) {
fseek(fp,0L,SEEK_SET);
send(sclient, sendData, len, 0); // 第一次发送
len = 0;
// 循环等待5s
for (int count = 0; count < 500;count++) {
ret = recv(sclient, recData, 255, 0);
printf("ret = %d\n",ret);
if (ret> 0)
{
recData[ret] = '\0';
printf("%s\n",recData);
Sleep(10*60*1000-5000);//10分钟
break;
}
Sleep(10);//10ms
printf("run……%d\n",count);
}
printf("ret=%d\n",ret);
// 三次重传机制10s一次
if(ret < 0){
for (int i = 0; i <3000; i++) {
if (i % 1000 == 0) {
printf("-------------------------------------------------------%d\n",i%1000);
send(sclient, sendData, len, 0);
}
if ((ret = recv(sclient, recData, 255, 0)) > 0)
{
printf("%d s 已收到数据 ret[%d]\n",i*10/1000, ret);
Sleep(10 * 60 * 1000-i*10);//10分钟
break;
}
Sleep(10);// 10ms
printf("run……%d\n",i);
}
if (ret < 0)
Sleep(10*60*1000-35*1000);
}
}
}
closesocket(sclient);
fclose(fp);
fp = NULL;
WSACleanup();
printf("输入任意按钮……\n");
char ch = getchar();
return 0;
}