一个复杂的Windows下的socket程序
发表于:2024-10-26 作者:千家信息网编辑
千家信息网最后更新 2024年10月26日,上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。异样,server.cpp 为效劳器端代码,client 为客户端代码。效劳器端代码 serv
千家信息网最后更新 2024年10月26日一个复杂的Windows下的socket程序
上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。异样,server.cpp 为效劳器端代码,client 为客户端代码。
效劳器端代码 server.cpp:
#include #include #pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll int main(){ //初始化 DLL WSADATA wsaData; WSAStartup( MAKEWORD(2, 2), &wsaData); //创立套接字 SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); //绑定套接字 sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每一个字节都用0填充 sockAddr.sin_family = PF_INET; //运用IPv4地址 sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //详细的IP地址 sockAddr.sin_port = htons(1234); //端口 bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); //进入监听形态 listen(servSock, 20); //接纳客户端恳求 SOCKADDR clntAddr; int nSize = sizeof(SOCKADDR); SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize); //向客户端发送数据 char *str = "Hello World!"; send(clntSock, str, strlen(str)+sizeof(char), NULL); //封闭套接字 closesocket(clntSock); closesocket(servSock); //终止 DLL 的运用 WSACleanup(); return 0; }
客户端代码 client.cpp:
#include #include #include #pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dll int main(){ //初始化DLL WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); //创立套接字 SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); //向效劳器提议恳求 sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每一个字节都用0填充 sockAddr.sin_family = PF_INET; sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); sockAddr.sin_port = htons(1234); connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); //接纳效劳器传回的数据 char szBuffer[MAXBYTE] = {0}; recv(sock, szBuffer, MAXBYTE, NULL); //输入接纳到的数据 printf("Message form server: %s\n", szBuffer); //封闭套接字 closesocket(sock); //终止运用 DLL WSACleanup(); system("pause"); return 0; }
将 server.cpp 和 client.cpp 辨别编译为 server.exe 和 client.exe,先运转 server.exe,再运转 client.exe,输入后果为:
Message form server: Hello World!
Windows 下的 socket 程序和 Linux 思绪相反,但细节有所差异:
1) Windows 下的 socket 程序依附 Winsock.dll 或 ws2_32.dll,必需提早加载。DLL 有两种加载方法,请检查:静态链接库DLL的加载
2) Linux 运用"文件描绘符"的概念,而 Windows 运用"文件句柄"的概念;Linux 不辨别 socket 文件和通俗文件,而 Windows 辨别;Linux 下 socket() 函数的前往值为 int 类型,而 Windows 下为 SOCKET 类型,也就是句柄。
3) Linux 下运用 read() / write() 函数读写,而 Windows 下运用 recv() / send() 函数发送和接纳。
4) 封闭 socket 时,Linux 运用 close() 函数,而 Windows 运用 closesocket() 函数。
函数
套接字
程序
代码
客户
客户端
文件
数据
辨别
句柄
地址
字节
概念
类型
输入
通俗
也就是
后果
差异
异样
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
阿里云服务器宕机
籽岷服务器小游戏战墙
如何使用好一个数据库
网络安全技术的研究论文
机场网络安全考试
张店模具软件开发定制
云数据库整改
关于网络安全的作文六百字
怎样建数据库
vb软件开发安卓
博客园软件开发之道
数据库监听如何成功
数据库安全性指的是
嵌入式服务器装机
网络安全产业环境
翻译器网络安全知识竞赛形式
tomcat服务器的搭建
手机升级一半提示服务器出问题了
数据库唯一索引有不为空吗
异构无线网络安全研究
网络安全文明上网手抄报字
事业单位服务器硬盘算固定资产吗
类似恐龙有钱软件开发
湖南小成旭软件开发公司
数据库mysql是什么
程序编程和软件开发是什么意思
新闻头条网络安全最新消息
银信科技与网络安全
华诚网络技术有限公司
博士硕士论文数据库