本篇文章給大家分享的是有關Window/Linux下的Socket Server代碼,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Windows下
一、代碼
#include <iostream> #include <WinSock2.h> using namespace std; #pragma comment(lib,"Ws2_32.lib") void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { printf("WSAStartup failed with error: %d\n", err); return; } if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { printf("Could not find a usable version of Winsock.dll\n"); WSACleanup(); return; } else printf("The Winsock 2.2 dll was found okay\n"); // SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN addrSrv; addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(80); addrSrv.sin_addr.S_un.S_addr = htonl(ADDR_ANY); bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(addrSrv)); listen(sockSrv, 5); SOCKADDR_IN addrConn; int len = sizeof(addrConn); int n = 0; while(1) { // SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrConn, &len); cout<<"ip:"<<inet_ntoa(addrConn.sin_addr)<<", port:"<<addrConn.sin_port<<endl; // char buf[1024] = {0}; recv(sockConn, buf, 1024, 0); cout<<"server recv:"<<endl<<buf<<endl<<endl; // char send_buf[100] = {0}; sprintf(send_buf, "%s%d", "yes.", n); n++; cout<<"000000000000n:"<<n<<", send_buf:"<<send_buf<<endl; int ret = send(sockConn, send_buf, strlen(send_buf), 0); cout<<"ret:"<<ret<<endl<<endl; //shutdown(sockConn, SD_BOTH); closesocket(sockConn); } closesocket(sockSrv); }
二、運行
2.1 運行
1. 運行上述代碼。
2. 在瀏覽器中訪問127.0.0.1
2.2 結果
Linux下
一、代碼
#include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> using namespace std; int main(int argc, char* argv[]) { int sock_srv = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr_srv; bzero(&addr_srv, sizeof(struct sockaddr_in)); addr_srv.sin_addr.s_addr = htonl(INADDR_ANY); addr_srv.sin_family = AF_INET; addr_srv.sin_port = htons(81); bind(sock_srv, (struct sockaddr*)&addr_srv, sizeof(struct sockaddr)); listen(sock_srv, 5); struct sockaddr_in addr_conn; socklen_t len = sizeof(struct sockaddr_in); while(1) { int sock_conn = accept(sock_srv, (struct sockaddr*)&addr_conn, &len); cout<<"ip:"<<inet_ntoa(addr_conn.sin_addr)<<", port:"<<addr_conn.sin_port<<endl; char buf[1024] = {0}; read(sock_conn, buf, 1024); cout<<"server recv:"<<endl<<buf<<endl<<endl; write(sock_conn, "yes", strlen("yes")); shutdown(sock_conn, SHUT_RDWR); close(sock_conn); } close(sock_srv); return 0; }
二、運行
2.1 運行
1. 編譯上述代碼生成test,執行./test。
2. 在瀏覽器中訪問202.85.220.123:81。
2.2 結果
以上就是Window/Linux下的Socket Server代碼,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。