一个复杂的Windows下的socket程序
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。异样,server.cpp 为效劳器端代码,client 为客户端代码。效劳器端代码 serv
千家信息网最后更新 2026年11月04日一个复杂的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安全错误
数据库的锁怎样保障安全
互联网金融科技
互联网加科技
互联网科技开发公司
成都互联网科技公司
大白互联网科技
镁科技互联网资讯平台
衡水科技产业互联网平台
中国最先进互联网科技公司
互联网科技公司的市场部门
随着互联网科技发展
浙江互联网科技研学营
华夏互联网科技业
新兴科技互联网创新大赛颁奖典礼
华夏恒生互联网科技013171
内蒙古九一互联网科技
东莞新华互联网科技学校
互联网第三次科技革命特征
银川新华互联网科技学校原画
青岛易易互联网科技
优雇互联网科技有限公司
青岛互联网科技公司
无线互联网科技
火传媒上海互联网科技
互联网科技大会案例
互联网科技公司招聘
黑科技闪耀互联网之光
电子商务与互联网科技的关系
广州有谷有贝互联网科技有限公司
普陀区互联网教育科技管理办法
利用互联网等科技手段