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;
}
相关推荐
微软技术分享6 小时前
面向二进制安全的大模型多智能体框架
网络·安全·web安全
NeilYuen8 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
郝学胜_神的一滴8 小时前
游戏引擎原理与实践 04:拆解引擎基础系统与内存管理
c++·游戏
All for pursuit.9 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_307779139 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂9 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
倒头就睡的小比特9 小时前
C++多态
c++
潼心1412o12 小时前
C++初阶(长期更新)第5讲:类和对象(中)
开发语言·c++
weixin_3077791312 小时前
C++代码实现MATLAB中的normalize函数功能
开发语言·c++·算法·matlab
搁浅小泽12 小时前
新能源汽车多合一压缩机控制器CAN网络测试规范
网络·汽车