赞
踩
目录
C/C++实现TCP通信、接收WIFI数据
编程环境:VC++6.0
手机端:使用WiFi调试助手
提示:整个过程在局域网中进行
很多编程语言都可以实现socket通信。
本博客将通过C/C++实现WiFi(socket)数据的收发,并将电脑端分别作为客户端和服务端实现。
电脑端作为客户端,手机端作为服务端,电脑端程序需要设置手机端IP地址,和手机端的端口号。
经过查询
手机端的IP地址为:192.168.31.171
设置的端口号为:8080
所以电脑端程序修改如下:
- //初始化 DLL
- WSADATA wsaData;
- WSAStartup(MAKEWORD(2, 2), &wsaData);
- //创建套接字
- SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- //绑定套接字
- struct sockaddr_in sockAddr;
- memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充
- sockAddr.sin_family = PF_INET;
- sockAddr.sin_addr.s_addr = inet_addr("192.168.31.171");
- sockAddr.sin_port = htons(8080);
- connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
- // 设置接收空间
- char szBuffer[MAXBYTE] = { 0 };
在电脑端增加手机端IP地址和端口号PORT,然后循环接收手机端发来的数据,也可以向手机端发送数据。
- while(1)
- {
- recvbyte = recv(sock, szBuffer, MAXBYTE, NULL);
- if (recvbyte < 0)
- {
- perror(" recv error. ");
- return -1;
- }
- else if (recvbyte == 0)
- {
- printf("client exit. \n");
- break;
- }
- else
- {
- szBuffer[recvbyte] = '\0';
- printf("Message form server: %s\n", szBuffer);
- bytes_sent = send(sock, message, strlen(message), 0); // 数据发送
- // 存入数据库
- }
- }
需要启动手机端服务端,打开安装的WIFI调试助手。
运行电脑端C程序,连接手机端。
连接成功后,手机端会显示连接的电脑端IP和端口号。
电脑端IP查询:
通信效果展示:
电脑端(client端)收到手机端(server端)发来的数据
手机端(server端)收到 电脑端(client端)发来的数据
可以发现电脑作为客户端,手机作为服务端 可以正常交互信息。
电脑端作为服务端,手机端作为客户端,电脑端设置好自己本机IP和端口号。
经过查询
本机IP地址为:192.168.31.17
设置的端口号为:8080
电脑端程序如下:
- //初始化 DLL
- WSADATA wsaData;
- WSAStartup(MAKEWORD(2, 2), &wsaData);
- //创建套接字
- SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
- //绑定套接字
- struct sockaddr_in sockAddr;
- memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充
-
- sockAddr.sin_family = AF_INET;
- sockAddr.sin_port = htons(8080);
- sockAddr.sin_addr.s_addr = inet_addr("192.168.31.17");
-
- bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
- //进入监听状态
- listen(servSock, 20);
- //接收客户端请求
- SOCKADDR clntAddr;
- int nSize = sizeof(SOCKADDR);
- SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
-
- char buf[128];
- int recvbyte;
- char *message = "Hello, WiFi!"; // 要发送的数据
配置好服务端后,接下来就可以循环接收WiFi数据,也可以通过WiFi发送数据。
- while (1)
- {
- recvbyte = recv(clntSock, buf, sizeof(buf), 0); // 数据接收
- if (recvbyte < 0)
- {
- perror(" recv error. ");
- return -1;
- }
- else if (recvbyte == 0)
- {
- printf("client exit. \n");
- break;
- }
- else
- {
- buf[recvbyte] = '\0';
- printf(" buf :%s\n", buf);
- send(clntSock, message, strlen(message), 0); // 数据发送
- // 存入数据库
- }
-
- }
接下来需要将电脑端程序运行,然后开启手机端WiFi调试助手,连接服务端。
连接成功后,电脑端接收手机端发来的数据。
手机端也可以收到电脑端发来的数据,这样就实现了WiFi数据的互传。
源码连接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。