zoukankan      html  css  js  c++  java
  • 一个简单的Socket网络编程程序

    转载自 https://www.bilibili.com/video/BV1ms41137De?spm_id_from=pageDriver

    感谢up主的分享

    //服务端
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <WinSock2.h>//Windows Socket编程头文件
    #include <iostream>
    #include <WS2tcpip.h>
    #include <cstring>
    
    #pragma comment(lib, "ws2_32.lib")//链接ws2_32.lib库文件到此项目中
    using namespace std;
    
    //全局常量
    const int BUF_SIZE = 2048;
    
    
    
    //全局变量
    SOCKET sockSer, sockCli;
    SOCKADDR_IN addrSer, addrCli;//address
    int naddr = sizeof(SOCKADDR_IN);
    
    char sendbuf[BUF_SIZE];
    char inputbuf[BUF_SIZE];
    char recvbuf[BUF_SIZE];
    
    
    int main()
    {
        //加载socket库
        WSADATA wsadata;
        if (WSAStartup(MAKEWORD(2,2), &wsadata) != 0)
        {
            //输出出错信息
            cout << "载入socket库失败" << endl;
            system("pause");
            return 0;
        }
    
        //创建Socket
        sockSer = socket(AF_INET, SOCK_STREAM, 0);
    
        //初始化地址包
        addrSer.sin_addr.s_addr = inet_addr("192.168.0.1");//ip地址
        addrSer.sin_family = AF_INET;
        addrSer.sin_port = htons(12248);//端口号
    
        //绑定Socket和本地地址
        bind(sockSer, (SOCKADDR*)&addrSer, sizeof(SOCKADDR));
    
        while (1)
        {
            //监听连接请求
            listen(sockSer, 5);
            //接受连接请求
            sockCli = accept(sockSer, (SOCKADDR*)&addrCli, &naddr);
            if (sockCli != INVALID_SOCKET)//客户端套接口,连接成功
            {
                cout << "连接成功!" << endl;
                strcpy(sendbuf, "hello!");
                send(sockCli, sendbuf, sizeof(sendbuf), 0);
            }
        }
    
        //关闭套接字
        closesocket(sockSer);
        closesocket(sockCli);
        WSACleanup();
    
        return 0;
    }
    //客户端
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <WinSock2.h>//Windows Socket编程头文件
    #include <iostream>
    #include <WS2tcpip.h>
    #include <cstring>
    
    #pragma comment(lib, "ws2_32.lib")//链接ws2_32.lib库文件到此项目中
    using namespace std;
    
    //全局常量
    const int BUF_SIZE = 2048;
    
    
    
    //全局变量
    SOCKET sockSer, sockCli;
    SOCKADDR_IN addrSer, addrCli;//address
    int naddr = sizeof(SOCKADDR_IN);
    
    char sendbuf[BUF_SIZE];
    char inputbuf[BUF_SIZE];
    char recvbuf[BUF_SIZE];
    
    int main()
    {
        //加载socket库
        WSADATA wsadata;
        if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0)
        {
            //输出出错信息
            cout << "载入socket库失败" << endl;
            system("pause");
            return 0;
        }
    
        //创建Socket
        sockCli = socket(AF_INET, SOCK_STREAM, 0);
    
        //初始化客户端地址包
        addrCli.sin_addr.s_addr = inet_addr("129.0.0.1");//ip地址
        addrCli.sin_family = AF_INET;
        addrCli.sin_port = htons(12248);//端口号
    
        //初始化服务器地址
        addrSer.sin_addr.s_addr = inet_addr("192.168.0.1");//ip地址
        addrSer.sin_family = AF_INET;
        addrSer.sin_port = htons(12248);//端口号
    
        while (1)
        {
            if (connect(sockCli, (SOCKADDR*)&addrSer,sizeof(addrSer)) != SOCKET_ERROR)
            {
                recv(sockCli, recvbuf, sizeof(recvbuf), 0);
                cout << recvbuf << endl;
            }
        }
    
        //关闭套接字
        closesocket(sockSer);
        closesocket(sockCli);
        WSACleanup();
    
        return 0;
    }

    问题记录 https://blog.csdn.net/weixin_42731241/article/details/96143934

    Caesar卢尚宇

    2021年2月16日

    作者: 阿飞

    出处: https://www.cnblogs.com/nxopen2018/>

    关于作者:......

    如有问题, 可在底部(留言)咨询.

  • 相关阅读:
    Perl分片技术
    Perl的time、localtime和gmtime函数
    Perl文件名通配和文件查找
    Perl复制、移动、重命名文件/目录
    Perl文件、目录常用操作
    Perl文件测试操作和stat函数
    Linux终端会话实时共享(kibitz)
    Perl的IO操作(2):更多文件句柄模式
    Perl的IO操作(1):文件句柄
    Perl文件句柄相关常量变量
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14407696.html
Copyright © 2011-2022 走看看