使用c语言编写一个校园网连接辅助程序。

使用c/c++语言编写一个长安大学校园网连接辅助程序。

电脑通过校园WiFi连接互联网的过程中,通常情况下是需要进入一个web页面,提交用户名和密码,才能进行上网。本文分享了一个方法,可以实现电脑开机自动脸上校园WiFi之后,不用进入web页面即可实现上网功能。

1 原理分析

校园网通常情况下是通过局域网将端系统接入到因特网中,即电脑在连接上校园WiFi之后,所有向互联网发出的请求都是通过学校继续向外发送。因此,可以简单的认为只有在通过学校的授权之后,才可以与互联网交互信息。这一个授权过程是通过一个web页面来实现的,而web页面是传送的信息又是通过http协议来实现的(至少长安大学的校园网是这样的)。通常网站登录的系统,客户端向服务端提交登录信息(如用户名、密码)是通过http中的post方式实现的。因此完全可以写一个c程序,替代浏览器完成这一功能,并将该c程序设置为开机之后自动运行,即可到达目的。

2 开发工具及环境。

vs2019Fiddler
平台:Windows10

3 操作过程和源码

3.1 使用c语言编写一个socket通信的客户端。

C-S架构是网络通信程序中,非常普遍的一个方式。根据不同的业务场景,程序的对话方式是大不相同。这里仅需编写一个最简单的客服端即可(实现连接服务端,并能向服务端发送一次数据,并接收一次数据)。
:该教程中使用了strcpy函数,默认情况下编译器会给出报错C4996,这个错误大概意思就是使用了不太安全的函数,在版本比较新的编译器中都会遇到这个问题。
解决方法1 关闭项目的SDL。(具体方法百度一下就好了)
解决方法2 自己编写一个类似的函数。(能将字符串放到目标变量即可)

#include<stdio.h>
#include<windows.h>
#pragma comment(lib, "ws2_32.lib") // 动态库。

int main() {
	// 1 请求协议版本。
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2, 2), &wsaData);
	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
		printf("请求协议版本失败。\n");
		return -1;
	}
	printf("请求协议成功。\n");

	// 2 创建socket函数。
	SOCKET clientSocket;
	clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (SOCKET_ERROR == clientSocket) {
		printf("创建socket失败。\n");
		WSACleanup();
		return -2;
	}
	printf("创建socket成功。\n");

	// 3 获取服务器地址族。
	SOCKADDR_IN addr = { 0 };
	addr.sin_family = AF_INET; // 协议版本。
	addr.sin_addr.S_un.S_addr = inet_addr("172.18.8.37"); // 这里应该写校园网服务器地址。
	addr.sin_port = htons(80); // http协议默认就使用80号端口。

	// 4 连接到服务器。
	int r = connect(clientSocket, (sockaddr*)&addr, sizeof(addr));
	if (r == -1) {
		printf("连接服务器失败。\n");
		closesocket(clientSocket);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值