《网络安全编程基础》之Socket编程

《网络安全编程基础》之Socket编程 我的代码 server.c // server.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Winsock2.h> #pragma comment(lib,"ws2_32.lib") //添加静态链接库文件 void main(int argc,char* argv[]) { WSADATA wsadata; WSAStartup(MAKEWORD(1,1),&wsadata); SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //socket() /***地址结构体***/ SOCKADDR_IN addrSvr; addrSvr.sin_family=AF_INET; addrSvr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSvr.sin_port=htons(6000); /**************/ bind(sockSrv,(SOCKADDR*)&addrSvr, sizeof(SOCKADDR)); //bind() listen(sockSrv,5); //listen() SOCKADDR_IN addrClient; int len= sizeof(SOCKADDR); while(1) //加循环是为了应对多个客户端连接此服务器的情况 { SOCKET socksend=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //accept() char sendBuf[50]; // sprintf(sendBuf,"你好,我是服务器"); //使用sprintf给字符串赋值、连接字符串比较方便 send(socksend,sendBuf,strlen(sendBuf)+1,0); //send(),+1是因为字符串以\'\0\'结尾 char recvBuf[50]; recv(socksend,recvBuf,50,0); //recv() printf("%s\n",recvBuf); closesocket(socksend); } /*closesocket(sockSrv); WSACleanup();*/ //while(1)后的死代码 } client.c // Client.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Winsock2.h> #pragma comment(lib,"ws2_32.lib") //添加静态链接库文件 void main(int argc,char* argv[]) { WSADATA wsadata; WSAStartup(MAKEWORD(1,1),&wsadata); SOCKET socketClient=socket(AF_INET,SOCK_STREAM,0); //socket() /***地址结构体***/ SOCKADDR_IN addrSvr; addrSvr.sin_family=AF_INET; addrSvr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSvr.sin_port=htons(6000); /**************/ connect(socketClient,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR)); //connect() char recvBuf[50]; recv(socketClient,recvBuf,50,0); //recv() printf("%s\n",recvBuf); send(socketClient,"你好,我是客户端",strlen("你好,我是客户端")+1,0); //send() closesocket(socketClient); WSACleanup(); } 代码调试过程中出现的问题 问题一:macOS High Sierra下Clion出现CMake Error

toDJA.jpg

解决办法:百度无果,重新打开Clion发现连license都过期了,多半是没救了,只能老老实实用命令行试试了>_<

toBid.png

问题二:终端下编译server.c提示找不到"winsock2.h"头文件

torRI.png

解决办法:

Mac下编程用什么替换windows.h头文件?

我在mac下编程,想使用清屏指令cls不好使,也不能用windows.h头文件。请大家帮我想想怎么办。还有在mac下能用system" "么?

不行,你不能在除了 Windows 的任何系统上使用 Windows.h。你要理解 API 的概念,windows.h 这个头文件是 Windows 带的,而不是 C 语言自身有的。事实上,出了 Windows,没有任何系统——实际上也是在真真切切用 C 的系统——例如所有在跑类 Unix,比如 OS X、Linux 甚至 FreeBSD 上的,都不能用 Windows 这套 API。这也是为什么坊间都说 OS X 是适合做编程,特别是适合学编程的,因为 OS X 是“体制内”,也就使用和全世界除了 Windows 之外所有的东西都互通的底层架构的,而且它在过去的大部分时候都要比各类 Linux 要容易上手,所谓的“更优雅”。

……

在百度知道上看到了这段对话后感觉已经凉了,还好我有windows8.1虚拟机,这回再也不怕找不到windows头文件了吧!

问题三:windows8.1虚拟机不兼容VC6.0

towIH.png


toszt.png

解决办法:

右击Visual C++ 6.0快捷方式,选择"属性",在"目标(T):"中查看其可执行文件的地址为:"C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE",找到MSDEV.EXE;

右键选择"属性",在"常规"选项卡下将MSDEV.EXE更名为MSDEV1.EXE:

to6QP.png

在"兼容性"选项卡下勾选"以兼容模式运行这个程序",将兼容模式选择Windows XP(Service Pack2)",并将权限等级勾选为“以管理员身份运行此程序”,点击确定

tocsf.png

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdjww.html