Windows Socket编程笔记之最简单的小Demo
Windows Socket編程的大致過程:
服務(wù)器端:
----過程-------------對應(yīng)的API-------
?0.初始化???????? |? WSAStartup()
?1.創(chuàng)建Socket???? |? socket()
?2.綁定Socket???? |? bind()
?3.監(jiān)聽?????????? |? listen()
?4.接受連接?????? |? accept()
?5.接收/發(fā)送數(shù)據(jù)? |? recv()/send()
?6.關(guān)閉socket???? |? closesocket()
?7.釋放資源?????? |? WSACleanup()
_____________________________________
客戶端:
?0.初始化???????? |? WSAStartup()
?1.創(chuàng)建Socket???? |? socket()
?2.連接Socket???? |? connect()
?3.接收/發(fā)送數(shù)據(jù)? |? recv()/send()
?4.關(guān)閉socket???? |? closesocket()
?5.釋放資源?????? |? WSACleanup()
_____________________________________
以下是按照上面所述步驟編寫的服務(wù)器端和客戶端最簡單的一個小例子:
0.服務(wù)器端代碼:
?
// FileName: Server.cpp// 服務(wù)器端#include<stdio.h>#include<winsock.h>#include<windows.h>#pragma comment(lib,"ws2_32")#define PORT 2012#define IP "127.0.0.1"void main(){// 0.初始化WSADATA wsaData;WSAStartup(0x0202, &wsaData);// 1.創(chuàng)建SocketSOCKET sockServer;sockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 2.綁定Socketstruct sockaddr_in sockaddrServer;sockaddrServer.sin_family = AF_INET;sockaddrServer.sin_addr.S_un.S_addr = inet_addr(IP);sockaddrServer.sin_port = htons(PORT);memset(sockaddrServer.sin_zero, 0x00, 8);bind(sockServer, (struct sockaddr*)&sockaddrServer, sizeof(sockaddrServer));// 3.監(jiān)聽listen(sockServer, 0);// 4.接受連接struct sockaddr_in sockaddrClient; // 用于存放客戶端地址信息int addrlen = sizeof(sockaddrClient);SOCKET sockClient = accept(sockServer, (struct sockaddr*)&sockaddrClient, &addrlen);printf("IP: %s\n", inet_ntoa(sockaddrClient.sin_addr));printf("PORT: %d\n", ntohs(sockaddrClient.sin_port));// 5.recvchar buf[64] = {0};recv(sockClient, buf, 64, 0);printf("Recv buf = %s\n", buf);// 6.關(guān)閉Socketclosesocket(sockServer);// 7.釋放資源WSACleanup();}
?
1.客戶端代碼:
?
// FileName: Client.cpp// 客戶端#include<stdio.h>#include<winsock.h>#pragma comment(lib, "ws2_32")#define IP "127.0.0.1"#define PORT 2012void main(){// 0.初始化WSADATA wsaData;WSAStartup(0x0202, &wsaData);// 1.綁定SocketSOCKET sockServer= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 2.連接Socketstruct sockaddr_in sockaddrServer;sockaddrServer.sin_family = AF_INET;sockaddrServer.sin_addr.S_un.S_addr = inet_addr(IP);sockaddrServer.sin_port = htons(2012);memset(sockaddrServer.sin_zero, 0x00, 8);connect(sockServer, (struct sockaddr*)&sockaddrServer, sizeof(sockaddrServer));// 3.sendsend(sockServer, "helloworld", strlen("helloworld"), 0);// 4.關(guān)閉Socketclosesocket(sockServer);// 5.釋放資源WSACleanup();}
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/rookie2/archive/2012/09/28/2705606.html
總結(jié)
以上是生活随笔為你收集整理的Windows Socket编程笔记之最简单的小Demo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个伤感的qq网名男生!
- 下一篇: 超源能打自由之神吗