网络编程--TCP套接字(C/CC++)
2022/1/22 21:07:08
本文主要是介绍网络编程--TCP套接字(C/CC++),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
效果图 可实现自由通讯
客户端:
#define _WINSOCK_DEPRECATED_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #include <WinSock2.h> #include <iostream> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") int main(void) { while (1) { char sendBuf[50];// = "hello word!"; scanf("%s", sendBuf); WORD wVersion; WSADATA wsaData; int err; wVersion = MAKEWORD(1, 1); err = WSAStartup(wVersion, &wsaData); if (err != 0) return err; if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return-1; } //创建套接字 SOCKET sockCli = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN addrs; addrs.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addrs.sin_family = AF_INET; addrs.sin_port = htons(5000); //向服务器发起连接请求 connect(sockCli, (SOCKADDR*)&addrs, sizeof(SOCKADDR)); //接收数据 char recvBuf[100]; recv(sockCli, recvBuf, 100, 0); std::cout << recvBuf << std::endl; //发送数据 send(sockCli, sendBuf, 100, 0); closesocket(sockCli); WSACleanup(); std::cin.get(); } return 0; }
服务端:
#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <WinSock2.h> #include <iostream> #pragma comment(lib,"ws2_32.lib") int main(void) { //加载套接字库 WORD wVersionRequested;//版本要求 WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1, 1);//版本 //初始化套接字库 err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) return err; if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) return -1;//低字节 高字节 //新建套接字 SOCKET sockS = socket(AF_INET, SOCK_STREAM, 0);//AF_INET IPV4 SOCK_STREAM == TCP SOCKADDR_IN addrs; addrs.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //htonl 字节顺序 addrs.sin_family = AF_INET;//IPV4 addrs.sin_port = htons(5000);//端口号 //绑定套接字到本地IP, bind(sockS, (SOCKADDR*)&addrs, sizeof(SOCKADDR)); //开始监听 listen(sockS, 5); SOCKADDR_IN addrCil; int len = sizeof(SOCKADDR); while (true) { //接收客户连接 SOCKET sockConn = accept(sockS, (SOCKADDR*)&addrCil, &len); char sendBuf[100]; sprintf_s(sendBuf, 100, "Welcome %s to qiniu!", inet_ntoa(addrCil.sin_addr)); //发送数据 send(sockConn, sendBuf, strlen(sendBuf) + 1, 0); char recvBuf[100]; //接收数据 recv(sockConn, recvBuf, 100, 0); std::cout << recvBuf << std::endl; closesocket(sockConn); } closesocket(sockS); WSACleanup(); return 0; }
这篇关于网络编程--TCP套接字(C/CC++)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15Typescript 类型教程:轻松入门与实践指南
- 2024-11-15AntDesign-icons项目实战:新手入门教程
- 2024-11-14用Scratch编写语言模型:爪爪(Clawed)式简易教程
- 2024-11-14用大型语言模型在Amazon Bedrock上分类Jira工单
- 2024-11-14从数据到行动:亚马逊Bedrock代理如何自动化复杂工作流
- 2024-11-14Databricks与优化后的Snowflake性能大比拼
- 2024-11-14亚马逊 Inspector 解析:提升您的 AWS 负载安全的利器
- 2024-11-14揭秘VS Code for Web - Azure:轻松开发云端应用的新利器
- 2024-11-14揭秘指南:如何让Databricks中的数据为最终用户所用
- 2024-11-14OpenTelemetry扩展进入CI/CD可观测性领域