日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++基础--简单Socket通信实例

發(fā)布時間:2025/3/20 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++基础--简单Socket通信实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// WindowsSocketServer.cpp : 定義控制臺應(yīng)用程序的入口點。 // #include "stdafx.h" #include <iostream> #include <Windows.h> #include <Winsock2.h>#pragma comment(lib,"Ws2_32.lib")using namespace std; #define PORT 8081 #define IP_ADDRESS "172.16.20.181" DWORD WINAPI ClientThread(LPVOID lpParameter){SOCKET ClientSocket = (SOCKET)lpParameter;int Ret = 0;char RecvBuffer[MAX_PATH];while ( true ){memset(RecvBuffer, 0x00, sizeof(RecvBuffer));Ret = recv(ClientSocket, RecvBuffer, MAX_PATH, 0);if ( Ret == 0 || Ret == SOCKET_ERROR ) {cout<<"客戶端退出!"<<endl;break;}cout<<"接收到客戶信息為:"<<RecvBuffer<<endl;// send msg to clientRet = send(ClientSocket, RecvBuffer, (int)strlen(RecvBuffer), 0);if ( Ret == SOCKET_ERROR ){cout<<"Send Info Error::"<<GetLastError()<<endl;break;}cout<<"After Send Msg:"<<RecvBuffer<<endl;}return 0;}int main(int argc, char* argv[]){WSADATA Ws;SOCKET ServerSocket, ClientSocket;struct sockaddr_in LocalAddr, ClientAddr;int Ret = 0;int AddrLen = 0;HANDLE hThread = NULL;//Init Windows Socket//The WSAStartup function initiates use of WS2_32.DLL by a process.if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 ){cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;return -1;}//Create SocketServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if ( ServerSocket == INVALID_SOCKET ){cout<<"Create Socket Failed::"<<GetLastError()<<endl;return -1;}//the address of family specificationLocalAddr.sin_family = AF_INET;//The inet_addr function converts a string containing an (Ipv4) Internet Protocol dotted address into a proper address for the IN_ADDR structure.LocalAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS); //The htons function converts a u_short from host to TCP/IP network byte order (which is big-endian).LocalAddr.sin_port = htons(PORT);//Sets buffers to a specified character.memset(LocalAddr.sin_zero, 0x00, 8);//Bind Socket,The bind function associates a local address with a socket.Ret = bind(ServerSocket, (struct sockaddr*)&LocalAddr, sizeof(LocalAddr));if ( Ret != 0 ){cout<<"Bind Socket Failed::"<<GetLastError()<<endl;return -1;}//The listen function places a socket in a state in which it is listening for an incoming connection.Ret = listen(ServerSocket, 10);if ( Ret != 0 ){cout<<"listen ClientSocket Failed::"<<GetLastError()<<endl;return -1;}cout<<"服務(wù)端已經(jīng)啟動"<<endl;while ( true ){AddrLen = sizeof(ClientAddr);//The accept function permits an incoming connection attempt on a socket.ClientSocket = accept(ServerSocket, (struct sockaddr*)&ClientAddr, &AddrLen);if ( ClientSocket == INVALID_SOCKET ){cout<<"Accept Failed::"<<GetLastError()<<endl;break;}//The inet_ntoa function converts an (Ipv4) Internet network address into a string in Internet standard dotted format.cout<<"客戶端連接::"<<inet_ntoa(ClientAddr.sin_addr)<<":"<<ClientAddr.sin_port<<endl;//Call this function to create a thread that can use CRT functions.hThread = CreateThread(NULL, 0, ClientThread, (LPVOID)ClientSocket, 0, NULL);if ( hThread == NULL ){cout<<"Create Thread Failed!"<<endl;break;}CloseHandle(hThread);}closesocket(ServerSocket);closesocket(ClientSocket);WSACleanup();return 0;} // WindowsSocketClient.cpp : 定義控制臺應(yīng)用程序的入口點。 // #include "stdafx.h" #include <iostream> #include <Windows.h> #include <Winsock2.h>#pragma comment(lib,"Ws2_32.lib")using namespace std;#define PORT 8081 #define IP_ADDRESS "172.16.20.181"int _tmain(int argc, _TCHAR* argv[]) {WSADATA Ws;SOCKET ClientSocket;struct sockaddr_in ServerAddr;int Ret = 0;int AddrLen = 0;HANDLE hThread = NULL;char SendBuffer[MAX_PATH];//Init Windows Socket//The WSAStartup function initiates use of WS2_32.DLL by a process.if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 ){cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;return -1;}//Create SocketClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if ( ClientSocket == INVALID_SOCKET ){cout<<"Create Socket Failed::"<<GetLastError()<<endl;return -1;}ServerAddr.sin_family = AF_INET;ServerAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);ServerAddr.sin_port = htons(PORT);memset(ServerAddr.sin_zero, 0x00, 8);//Bind Socket,The bind function associates a local address with a socket.//Ret = bind(ClientSocket, (struct sockaddr*)&ServerAddr, sizeof(ServerAddr));//if ( Ret != 0 )//{// cout<<"Bind Client Socket Failed::"<<GetLastError()<<endl;// //return -1;//} Ret = connect(ClientSocket,(struct sockaddr*)&ServerAddr, sizeof(ServerAddr));if ( Ret == SOCKET_ERROR ){cout<<"Connect Error::"<<GetLastError()<<endl;// return -1; }else{cout<<"連接成功!"<<endl;}while ( true ){cin.getline(SendBuffer, sizeof(SendBuffer));Ret = send(ClientSocket, SendBuffer, (int)strlen(SendBuffer), 0);if ( Ret == SOCKET_ERROR ){cout<<"Send Info Error::"<<GetLastError()<<endl;break;}char recvBuf[500];int byteRecv = recv(ClientSocket, recvBuf, MAX_PATH, 0);if (byteRecv != 0){recvBuf[byteRecv] = 0;cout << "From server: " << recvBuf << endl;}}closesocket(ClientSocket);WSACleanup();system("pause");return 0;}

轉(zhuǎn)載于:https://www.cnblogs.com/kingdom_0/articles/2558131.html

總結(jié)

以上是生活随笔為你收集整理的C++基础--简单Socket通信实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。