TCP&IP网络编程(尹圣雨)简易版回声客户端

端口号随便写了一个,写的是 2345。

如果需要按下Q键退出,客户端部分加个判断即可

服务端:

cpp 复制代码
#include <iostream>
#include <WinSock2.h>

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

using std::cout;
using std::endl;

int main()
{
    WSADATA wsa;
    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
    {
        cout << "WSA Error" << endl;
        return 0;
    }

    sockaddr_in sd;
    sd.sin_family = AF_INET;
    sd.sin_port = htons(2345);
    sd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

    // socket
    SOCKET fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (fd == INVALID_SOCKET)
    {
        cout << "socket error" << endl;
        return 0;
    }
    // bind
    if (bind(fd, (sockaddr *)(&sd), sizeof(sd)) == SOCKET_ERROR)
    {
        cout << "bind error" << endl;
        return 0;
    }

    // listen
    listen(fd, 10);

    sockaddr_in sd2;
    int sd2Size = sizeof(sd2);
    // accept
    SOCKET clientFd = accept(fd, (sockaddr *)(&sd2), &sd2Size);
    if (clientFd == INVALID_SOCKET)
    {
        cout << "客户端 socket error" << endl;
    }
    char buf[1024] = "";
    while (1)
    {

        if (recv(clientFd, buf, 1024, 0) != 0)
        {
            cout << "recv " << buf << endl;
            send(clientFd, buf, 1024, 0);
             // strcpy(buf, "");
        }

    }
    closesocket(clientFd);
    closesocket(fd);

    WSACleanup();

    return 0;
}

客户端:

cpp 复制代码
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

using std::cout;
using std::endl;
using std::cin;

int main()
{
    WSADATA wsa;
    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
    {
        cout << "WSA Error" << endl;
        return 0;
    }
    // socket 
    SOCKET fd = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
    if (fd == INVALID_SOCKET)
    {
        cout << "socket error" << endl;
        return 0;
    }

    sockaddr_in sd;
    sd.sin_family = AF_INET;
    sd.sin_port = htons(2345);
    sd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

    // connect
    if (connect(fd, (sockaddr *)(&sd), sizeof(sd)) == SOCKET_ERROR)
    {
        cout << "connect error" << endl;
        return 0;
    }
    while (1)
    {
        char buf[1024];
        cout << "请输入数据:" << endl;
        cin >> buf;
        send(fd, buf, 1024, 0);

        if (recv(fd, buf, 1024, 0) > 0)
        {
            cout << buf << endl;
        }
    }
    closesocket(fd);
    WSACleanup();
    getchar();

    return 0;
}
相关推荐
Dream it possible!1 分钟前
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
c++·leetcode·位运算·哈希表·哈希集合
firshman_start1 小时前
第十五章,SSL VPN
网络
Johnstons1 小时前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析
Dddle11 小时前
C++:this指针
java·c语言·开发语言·c++
落——枫1 小时前
路由交换实验
网络
Johny_Zhao2 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm
小诸葛的博客2 小时前
华为ensp实现跨vlan通信
网络·华为·智能路由器
稳联技术2 小时前
Ethercat转Profinet网关如何用“协议翻译术“打通自动化产线任督二脉
linux·服务器·网络
不見星空2 小时前
2025年第十六届蓝桥杯软件赛省赛C/C++大学A组个人解题
c语言·c++·蓝桥杯
jiunian_cn2 小时前
【c++】异常详解
java·开发语言·数据结构·c++·算法·visual studio