一个复杂的Windows下的socket程序
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。异样,server.cpp 为效劳器端代码,client 为客户端代码。效劳器端代码 serv
千家信息网最后更新 2025年02月12日一个复杂的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安全错误
数据库的锁怎样保障安全
联通宽带dns服务器地址怎么填
如何安装服务器安全狗
本科应届生毕业软件开发月薪
虚拟机删除域服务器
网络安全检查费用
黑魂3服务器维护时间2022
软件开发职位图解
浦东新区无线网络技术报价
无线网络安全使用管理办法
国家三级数据库上机考什么
云南中小学生网络安全知识竞赛
数据库基本结构和组成
校园网络安全系统安全总结
厦门软件开发需要多少钱
我的世界服务器卡
近年常见的热点网络技术名称
美日印澳峰会网络安全领域
软件开发商业计划书下载
数据库与触摸屏同步数据
三个数比大小数据库语句
pb如何实现数据库更改
上海专业网络技术分类标准
spring配置数据库读写
linux联网服务器
服务器预览版是什么
通讯网络技术类
明日之后渠道服第一服务器是哪个
面向对象数据库系统概念
服务器上有没有防火墙
wcl服务器排名按什么算