• Hello Socket


    1. 首先,要编写windows下socket程序,必须要加入Winsock支持

    2. 服务端监听程序(Server.cpp)

    #include<winsock2.h>                        //包含头文件
    #include<stdio.h>
    #include<windows.h>
    #pragma comment(lib,"WS2_32.lib")            //显式连接套接字库
    
    int main()                                    //主函数开始
    {
        WSADATA data;                            //定义WSADATA结构体对象
        WORD w=MAKEWORD(2,0);                    //定义版本号码
        char sztext[]="Welcome
    ";                //定义并初始化发送到客户端的字符数组
        ::WSAStartup(w,&data);                    //初始化套接字库
        SOCKET s,s1;                            //定义连接套接字和数据收发套接字句柄
        s=::socket(AF_INET,SOCK_STREAM,0);        //创建TCP套接字
        sockaddr_in addr,addr2;                    //定义套接字地址结构
        int n=sizeof(addr2);                    //获取套接字地址结构大小
        addr.sin_family=AF_INET;                //初始化地址结构
        addr.sin_port=htons(75);
        addr.sin_addr.S_un.S_addr=INADDR_ANY;
        ::bind(s,(sockaddr*)&addr,sizeof(addr));    //绑定套接字
        ::listen(s,5);                                //监听套接字
        printf("Server Started
    ");                //输出提示信息
    
        while(true)
        {
            s1=::accept(s,(sockaddr*)&addr2,&n);    //接受连接请求
            if(s1!=NULL)
            {
                printf("%sConnected Successful!
    ",inet_ntoa(addr2.sin_addr));
                ::send(s1,sztext,sizeof(sztext),0);    //向客户端发送字符数组
            }
            ::closesocket(s);                        //关闭套接字句柄
            ::closesocket(s1);
            ::WSACleanup();                            //释放套接字库
            if(getchar())                            //如果有输入,则关闭程序
            {
                return 0;                            //正常结束程序
            }
            else
            {
                ::Sleep(100);                        //应用睡眠0.1秒
            }
        }
    }

    3. 客户端请求程序(Client.cpp)

    #include<winsock2.h>                //包含头文件
    #include<stdio.h>
    #include<windows.h>
    #pragma comment(lib,"WS2_32.lib")        //显式连接套接字库
    
    int main()                            //主函数开始
    {
        WSADATA data;                        //定义WSADATA结构体对象
        WORD w=MAKEWORD(2,0);                    //定义版本号码
        ::WSAStartup(w,&data);                    //初始化套接字库
        SOCKET s;                        //定义连接套接字句柄
        char sztext[10]={0};
        s=::socket(AF_INET,SOCK_STREAM,0);            //创建TCP套接字
        sockaddr_in addr;                    //定义套接字地址结构
        addr.sin_family=AF_INET;                //初始化地址结构
        addr.sin_port=htons(75);
        addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
        printf("Client Started
    ");                //输出提示信息
        ::connect(s,(sockaddr*)&addr,sizeof(addr));
        ::recv(s,sztext,sizeof(sztext),0);
        printf("%s
    ",sztext);
        ::closesocket(s);                    //关闭套接字句柄
        ::WSACleanup();                        //释放套接字库
        if(getchar())                        //如果有输入,则关闭程序
        {
            return 0;                    //正常结束程序
        }
        else
        {
            ::Sleep(100);                    //程序睡眠
        }
    }
  • 相关阅读:
    深入理解泛型之JAVA泛型的继承和实现、泛型擦除
    hadoop过程中遇到的错误与解决方法
    微服务拆分到什么粒度合适——康威定律
    墨菲定律(设计系统)和康威定律(系统划分)
    Hadoop-Impala学习笔记之SQL参考
    Hadoop-Impala学习笔记之管理
    Hadoop2-HDFS学习笔记之入门(不含YARN及MR的调度功能)
    Hadoop-Impala学习笔记之入门
    解决 Invalid character found in method name. HTTP method names must be tokens 异常信息
    从康威定律和技术债看研发之痛
  • 原文地址:https://www.cnblogs.com/davidgu/p/4444154.html
Copyright © 2020-2023  润新知