C++ Socket 实例
生活随笔
收集整理的這篇文章主要介紹了
C++ Socket 实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
服務端:#include "stdafx.h"
#include <Winsock2.h>
#include <cstdio>
#include <iostream>#pragma comment(lib,"ws2_32.lib")int main()
{WSADATA wsdata = {0};WSAStartup(MAKEWORD(2, 2), &wsdata); //Winsock服務的初始化,這句話一定要放在前面SOCKET socketServer = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN addserver;addserver.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IPaddserver.sin_family = AF_INET;addserver.sin_port = htons(6000);auto res=bind(socketServer, (SOCKADDR*)&addserver, sizeof(SOCKADDR));listen(socketServer, 5);printf("服務器已啟動:\n監聽中...\n");SOCKET socketClient;SOCKADDR_IN addClient;int len = sizeof(SOCKADDR);char charsendBuf[100];//發送至客戶端的字符串char charrecvBuf[100];//接受客戶端返回的字符串//會阻塞進程,直到有客戶端連接上來為止socketClient = accept(socketServer, (SOCKADDR*)&addClient, &len);//接收并打印客戶端數據recv(socketClient, charrecvBuf, 100, 0);printf("%s\n", charrecvBuf);//關閉socketclosesocket(socketClient);WSACleanup();
}
客戶端:
#include "stdafx.h" #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #include <Winsock2.h> #include <cstdio> #include <iostream>#pragma comment(lib,"ws2_32.lib") int main() {WSADATA wsaData;SOCKET sockClient;//客戶端Socketsockaddr_in addrServer;//服務端地址WSAStartup(MAKEWORD(2, 2), &wsaData);//新建客戶端socketsockClient = socket(AF_INET, SOCK_STREAM, 0);//定義要連接的服務端地址addrServer.sin_addr.s_addr = inet_addr("127.0.0.1");//目標IP(127.0.0.1是回送地址)addrServer.sin_family = AF_INET;addrServer.sin_port = htons(6000);//連接端口6000//連接到服務端connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));auto err = GetLastError();std::cout << err;//發送數據char message[20] = "HelloSocket!";send(sockClient, message, strlen(message) + 1, 0);//關閉socketclosesocket(sockClient);WSACleanup();return 0; }服務器端編程的步驟:
1:加載套接字庫,創建套接字(WSAStartup()/socket());
2:綁定套接字到一個IP地址和一個端口上(bind());
3:將套接字設置為監聽模式等待連接請求(listen());
4:請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字(accept());
5:用返回的套接字和客戶端進行通信(send()/recv());
6:返回,等待另一連接請求;
7:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。
客戶端編程的步驟:
1:加載套接字庫,創建套接字(WSAStartup()/socket());
2:向服務器發出連接請求(connect());
3:和服務器端進行通信(send()/recv());
4:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。
轉載于:https://www.cnblogs.com/kevinWu7/p/10163537.html
總結
以上是生活随笔為你收集整理的C++ Socket 实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES5和ES6中的变量声明提升
- 下一篇: 《网络安全原理与实践》一1.2 资产确定