zoukankan      html  css  js  c++  java
  • CP Socket编程 C/C++实现 (Windows Platform SDK)

    keyit.focus();} C语言TCP程序中的Hello World。以前一直用OO语言,现在用C语言写着玩,思想上有点转不过来弯,o(∩_∩)o... Server:
    #pragma comment(lib, "ws2_32.lib")

    #include <Winsock2.h>

    #include <stdio.h>



    void main()

    {

    //版本协商

    WORD wVersionRequested;

    WSADATA wsaData;

    int err;



    wVersionRequested = MAKEWORD(1,1); //0x0101

    err = WSAStartup(wVersionRequested,&wsaData);

    if(err!=0)

    {

    return;

    }



    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)

    //wsaData.wVersion!=0x0101

    {

    WSACleanup();

    return;

    }

    //创建Socket

    SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);

    //创建IP地址和端口

    SOCKADDR_IN addrSvr;

    addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

    addrSvr.sin_family = AF_INET;

    addrSvr.sin_port = htons(6000);

    //绑定端口监听

    bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));

    listen(sockSvr,5);



    sockaddr_in addrClient;

    int len = sizeof(sockaddr);

    while(true)

    {

    //阻塞方法,获得一个客户Socket连接

    SOCKET sockConn = accept(sockSvr,(sockaddr*)&addrClient,&len);

    char sendbuffer[128];

    sprintf(sendbuffer,"Welcom %s!",inet_ntoa(addrClient.sin_addr));

    //向客户Socket发送数据

    send(sockConn,sendbuffer,strlen(sendbuffer)+1,0);

    char recvbuffer[128];

    //从客户Soc接受数据

    recv(sockConn,recvbuffer,128,0);

    printf("%s\n",recvbuffer);

    //关闭Socket

    closesocket(sockConn);

    }

    closesocket(sockSvr);

    //释放Winsock资源

    WSACleanup();

    }
    Client:
    #pragma comment (lib,"ws2_32.lib")

    #include <Winsock2.h>

    #include <stdio.h>



    void main()

    {

    //版本协商

    WORD wVersionRequested;

    WSADATA wsaData;

    int err;



    wVersionRequested = MAKEWORD(1,1); //0x0101

    err = WSAStartup(wVersionRequested,&wsaData);

    if(err!=0)

    {

    return;

    }



    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)

    //wsaData.wVersion!=0x0101

    {

    WSACleanup();

    return;

    }

    //创建连向服务器的套接字

    SOCKET sock = socket(AF_INET,SOCK_STREAM,0);

    //创建地址信息

    SOCKADDR_IN hostAddr;

    hostAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

    hostAddr.sin_family = AF_INET;

    hostAddr.sin_port = htons(6000);

    //连接服务器

    connect(sock,(sockaddr*)&hostAddr,sizeof(sockaddr));



    char revBuf[128];

    //从服务器获得数据

    recv(sock,revBuf,128,0);

    printf("%s\n",revBuf);

    //向服务器发送数据

    send(sock,"Hello Host!",12,0);

    closesocket(sock);

    }
  • 相关阅读:
    《大道至简:软件工程实践者的思想》读后感
    周学习进度总结(2019.7.14)
    周学习进度总结(2019.7.7)
    周学习进度总结(2019.8.13)
    周学习进度总结(2019.8.4)
    石家庄铁道大学2019 年秋季 2018级JAVA课堂测试试卷(一)
    周学习进度总结(2019.7.27)
    周学习进度总结(2019.8.25)
    周学习进度总结(2019.7.20)
    C#中判断是否为数字
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994826.html
Copyright © 2011-2022 走看看