1 Star 0

简锋 / 服务器编程

 / 详情

EasyServer.cpp

待办的
拥有者
创建于  
2021-07-17 10:07

#define WIN32_LEAN_AND_MEAN
#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <windows.h>
#include <WinSock2.h>
#include

#pragma comment(lib , "ws2_32.lib")

int main()
{
// 启动Windows socket 2.x环境
WORD ver = MAKEWORD(2, 2);
WSADATA dat;
WSAStartup(ver, &dat);
//-----------------

// 用Socket API建立简易TCP服务器端
// 1建立一个Socket
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// 2 bind 绑定用于接收客户端连接的网络端口
sockaddr_in _sin = {};
_sin.sin_family = AF_INET;
_sin.sin_port = htons(4567);
_sin.sin_addr.S_un.S_addr = INADDR_ANY;//inet_addr("127.0.0.1");
if (bind(sock, (sockaddr*)&_sin, sizeof(_sin)) == SOCKET_ERROR) {
    printf("Bind Port Error\n");
}
else {
    printf("Bind Port Success\n");
}
// 3 listen 监听网络端口
if (listen(sock, 5) == SOCKET_ERROR) {
    printf("listen failed\n");
}
else {
    printf("listen success\n");
}
// 4 accept 等待客户端连接
sockaddr_in clientAddr = {};
int cAddrlen = sizeof(sockaddr_in);
SOCKET csock = INVALID_SOCKET;
csock = accept(sock, (sockaddr*)&clientAddr, &cAddrlen);
if (csock == INVALID_SOCKET) {
    printf("failed , recieve a invalid client socket\n");
}
printf("new client join:socket = %d , IP = %s \n", csock , inet_ntoa(clientAddr.sin_addr));

char recvbuf[128] = {};
while (true) {
    // 接收客户端的请求数据
    int len = recv(csock, recvbuf, 128, 0);
    if (len <= 0) {
        printf("client exit\n");
        break;
    }
    printf("收到命令:%s\n", recvbuf);
    // 处理请求
    if (0 == strcmp(recvbuf, "getName")) {
        char buf[] = "JianFeng";
        send(csock, buf, strlen(buf) + 1 , 0);
    }
    else if (0 == strcmp(recvbuf, "getAge")) {
        char buf[] = "24";
        send(csock, buf, strlen(buf) + 1, 0);
    }
    else {
        char buf[] = "???";
        send(csock, buf, strlen(buf) + 1, 0);
    }
}
// 6 关闭套接字
closesocket(sock);
WSACleanup();
return 0;

}

评论 (0)

简锋 创建了任务
简锋 关联仓库设置为简锋/服务器编程
简锋 修改了描述
展开全部操作日志

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
1
https://gitee.com/linux_jianfeng123/server-programming.git
git@gitee.com:linux_jianfeng123/server-programming.git
linux_jianfeng123
server-programming
服务器编程

搜索帮助