C++ 网络开发(一) 基本Socket搭建以及理解
发布时间:2020-12-16 09:19:14 所属栏目:百科 来源:网络整理
导读:直接看代码和注释,本部分代码来源于网络视频 服务端: #define WIN32_LEAN_AND_MEAN //Windows.h 包含了早期的sock 1版本的实现,为了避免这些实现影响到sock 2的编译,这里就加入这个宏,尽可能引用新的定义以及实现#include iostream#include Windows.h#i
直接看代码和注释,本部分代码来源于网络视频
服务端: #define WIN32_LEAN_AND_MEAN //Windows.h 包含了早期的sock 1版本的实现,为了避免这些实现影响到sock 2的编译,这里就加入这个宏,尽可能引用新的定义以及实现 #include <iostream> #include <Windows.h> #include <Winsock2.h> #ifdef WIN32 #pragma comment(lib,"ws2_32.lib"); //这里库里面包含了对网络通信代码的实现 #endif // WIN32 int main(int argc,char* argv) { WORD wVersion = MAKEWORD(2,2); WSADATA wData; //启动网络环境 WSAStartup(wVersion,&wData); //创建一个服务端Socket SOCKET _server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in sock_addr; sock_addr.sin_family = AF_INET; sock_addr.sin_port = htons(1111); //这里是因为本地的编码和网络协议的编码不一致,所以需要转换 host to unsigned short sock_addr.sin_addr.S_un.S_addr = INADDR_ANY; //这里表示可以用我本地所有的IP来建立连接,也可以特殊初始化一个IP字符串,表示我只想让网络通信在这个IP上进行 //绑定socket 到某IP以及端口 if (SOCKET_ERROR == bind(_server,(sockaddr *)&sock_addr,sizeof(sockaddr_in))) { std::cout << "socket bind error..." << std::endl; return 0; } //监听客户端连接 if (SOCKET_ERROR == listen(_server,5)) { std::cout << "socket listen error..." << std::endl; return 0; } sockaddr_in client_sock_addr; int nLen = sizeof(sockaddr_in); SOCKET _client = INVALID_SOCKET; while (true) { //接受客户端连接 _client = accept(_server,(sockaddr *)&client_sock_addr,&nLen); if (INVALID_SOCKET != _client) { std::cout << "get a client connect. IP:" << inet_ntoa(client_sock_addr.sin_addr) << std::endl; } char* return_msg = "I have listened to you..."; int nRet = send(_client,return_msg,strlen(return_msg) + 1,0); if (nRet <= 0) { std::cout << "send message error..." << std::endl; } closesocket(_client); } //关闭网络环境并作清理 WSACleanup(); return 1; } 客户端: 待续。。。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |