iec备份
#include "pch.h" #include <iostream> #include <stdio.h> #include <winsock2.h> #include<WS2tcpip.h> #include <string> #include <atlstr.h> #include <pthread.h> #include <assert.h> #include <stdlib.h> #include <Windows.h> #include "doiec.h" using namespace std; #pragma comment(lib, "pthreadVC2.lib") #pragma comment(lib,"ws2_32.lib") void * service_thread(void * args); int main(int argc, char* argv[]) { //初始化WSA windows自带的socket WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData; if (WSAStartup(sockVersion, &wsaData) != 0) { return 0; } //创建服务端套接字 SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (slisten == INVALID_SOCKET) { printf("socket error !"); return 0; } //服务端需要绑定ip和端口 sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(2404); sin.sin_addr.S_un.S_addr = INADDR_ANY; //监听任意的地址 if (bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) //将服务端套接字与上面的ip和端口绑定 { printf("bind error !"); } //开始监听 if (listen(slisten, 5) == SOCKET_ERROR) //用listen() 监听前面绑定好的slisten套接字 { printf("listen error !"); return 0; } //循环接受数据 SOCKET sClient; //创建连接的套接字 sockaddr_in remoteAddr; int nAddrlen = sizeof(remoteAddr); //用于接受客户端地址 while (1) { printf("等待连接...\n"); if ((sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen)) < 0)//和客户端 connect()对应 { perror("accept error!"); return -1; } char sendBuf[20] = { '\0' }; printf("接受到一个连接:%s (%d)\r\n", inet_ntop(AF_INET, (void*)&remoteAddr.sin_addr, sendBuf, 16), remoteAddr.sin_port); if (sClient == INVALID_SOCKET) { printf("accept error !"); continue; } int ifd; ifd = sClient; pthread_t pId; pthread_create(&pId, NULL, service_thread, &ifd); } closesocket(slisten); //关闭监听的套接字 WSACleanup(); return 0; } void * service_thread(void * args) { int sockfd = *(int*)args; char revData[255] = ""; //存储接受的数据 printf("client_fd:%d\n", sockfd); while (1) { printf("等待数据接收...\n"); int ret = recv(sockfd, revData, 255, 0); if (ret > 0) { /* revData[ret] = 0x00; printf(revData); CString str, ch; for (int i = 0; i < ret; i++) { ch.Format(" %02x ", revData[i]); str += ch; cout << ch << endl; } cout << str << endl; */ //revData[ret] = 0x00; doiec(revData,ret); #if 0 for (int i = 0; i < ret; i++) { printf(" %02x \n", (unsigned char)revData[i]); /* if ((unsigned char)revData[i] == 0x80) { cout <<" yes "<< endl; } */ } #endif } APCI header; header.start = 0x68; header.len = 0x04; header.field1 = 0x0b; header.field2 = 0x00; header.field3 = 0x00; header.field4 = 0x00; ////发送数据给客户端 //const char *sendData = "0x68 0x04 0x0b 0x00 0x00 0x00 "; send(sockfd, (const char*)&header, sizeof(header), 0); } } /* char * switch_method(int x) { if (x) { switch (method) { //case queryDomain: return queryDomain_re_success; default: return 0; } } else { switch (method) { default: return 0; } } } */
我就笑笑,笑他什么是非多端。
我就笑笑,笑他什么都看不穿。

浙公网安备 33010602011771号