客戶端代碼服務器
//socket簡單的客戶端代碼 #define WIN32_LEAN_AND_MEAN #define _CRT_SECURE_NO_WARNINGS #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <string.h> #include <Windows.h> #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char *argv[]) { WSADATA wd; WSAStartup(MAKEWORD(2, 2), &wd); //建立客戶端套接字 SOCKET sktCli = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in addrSer = {0}; addrSer.sin_family = AF_INET;//要接的服務器的IPV4協議 addrSer.sin_port = htons(8080);//要鏈接的服務器的端口 addrSer.sin_addr.s_addr = inet_addr("127.0.0.1");//要鏈接的服務器的IP //鏈接服務器 connect(sktCli, (sockaddr *)&addrSer, sizeof(addrSer)); char buf[1024]; while (true) { printf(">>"); scanf("%s", buf); send(sktCli, buf, strlen(buf) + 1, 0);//向服務器發送數據 recv(sktCli, buf, sizeof(buf), 0);//接受服務器發送的數據 printf("[server] %s\n", buf); } WSACleanup(); return 0; }
服務端代碼socket
//socket簡單的服務器代碼 #define WIN32_LEAN_AND_MEAN #define _CRT_SECURE_NO_WARNINGS #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <string.h> #include <Windows.h> #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char *argv[]) { WSADATA wd; WSAStartup(MAKEWORD(2, 2), &wd); //建立服務器套接字 SOCKET sktSer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in addrSer = { 0 }; addrSer.sin_family = AF_INET;//服務器的IPV4協議 addrSer.sin_port = htons(8080);//服務器的端口 addrSer.sin_addr.s_addr = inet_addr("127.0.0.1");//服務器的IP //將套接字和端口、ip綁定 int i = bind(sktSer, (sockaddr *)&addrSer, sizeof(addrSer)); //開始監聽套接字 listen(sktSer, 5); //接受客戶端套接字 SOCKET sktCli = accept(sktSer, NULL, NULL); char buf[1024]; while (true) { recv(sktCli, buf, sizeof(buf), 0);//接受客戶端發送的數據 printf("[client] %s\n", buf); send(sktCli, buf, strlen(buf) + 1, 0);//向客戶端發送數據 } WSACleanup(); return 0; }