zoukankan      html  css  js  c++  java
  • Socket(发送,接收)

    send.cpp:

    #include <WinSock2.h>
    #include <stdio.h>
    #include <Windows.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    int main()
    {
        unsigned long ip;
        ip=inet_addr("127.0.0.1");
    
        short port;
        port=8000;
    
        printf("Connecting to 127.0.0.1:8000....");
    
        WSADATA wsa;
    
        if (WSAStartup(MAKEWORD(2,2),&wsa)!=0)
        {
            printf("socket init error");
            exit(-1);
        }
    
        SOCKET sock;
    
        if ((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_ATOM)
        {
            printf("create socket error");
            exit(-1);
        }
    
        struct sockaddr_in serverAddress;
        memset(&serverAddress,0,sizeof(sockaddr_in));
        serverAddress.sin_family=AF_INET;
        serverAddress.sin_addr.S_un.S_addr=ip;
        serverAddress.sin_port=htons(port);
    
        if (connect(sock,(sockaddr*)&serverAddress,sizeof(serverAddress))==SOCKET_ERROR)
        {
            printf("link error");
            exit(-1);
        }
    
        char buf[4096];
        while (1)
        {
            printf(">");
            gets(buf);
    
            if (send(sock,buf,strlen(buf),0)==SOCKET_ERROR)
            {
                printf("send error");
                exit(-1);
            }
            int bytes;
    
            if ((bytes=recv(sock,buf,sizeof(buf),0))==SOCKET_ERROR)
            {
                printf("receive error");
                exit(-1);
            }
    
            buf[bytes]='\0';
            printf("Message from %s:%s\n",inet_ntoa(serverAddress.sin_addr),buf);
    
        }
    
        WSACleanup();
        return 0;
    
    }

    receive.cpp:

    #include <WinSock2.h>
    #include <stdio.h>
    #include <Windows.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    int main(int argc,char *argv[])
    {
    
        short port;
    
        port=8000;
        WSADATA wsa;
    
        if (WSAStartup(MAKEWORD(2,2),&wsa)!=0)
        {
            printf("socket init error");
            exit(-1);
        }
    
        SOCKET serverSocket;
    
        if((serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
        {
            printf("创建套接字失败!");
            exit(-1);
        }
    
        struct sockaddr_in serverAddress;
        memset(&serverAddress,0,sizeof(sockaddr_in));
        serverAddress.sin_family=AF_INET;
        serverAddress.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
        serverAddress.sin_port=htons(port);
    
        if (bind(serverSocket,(sockaddr*)&serverAddress,sizeof(serverAddress))==SOCKET_ERROR)
        {
            printf("socket port error:%d",port);
            exit(-1);
        }
    
    
        if (listen(serverSocket,SOMAXCONN)==SOCKET_ERROR)
        {
            printf("listen error");
            exit(-1);
        }
        printf("Server 8000 is listening......\n");
        SOCKET clientSocket;
        struct sockaddr_in clientAddress;
    
        memset(&clientAddress,0,sizeof(clientAddress));
        int addrlen=sizeof(clientAddress);
    
        if ((clientSocket=accept(serverSocket,(sockaddr*)&clientAddress,&addrlen))==INVALID_SOCKET)
        {
            printf("link error");
            exit(-1);
        }
    
        char buf[4096];
    
        while (1)
        {
            int bytes;
            if ((bytes=recv(clientSocket,buf,sizeof(buf),0))==SOCKET_ERROR)
            {
                printf("data error");
                exit(-1);
            }
    
            buf[bytes]='\0';
            printf("Message from %s: %s\n",inet_ntoa(clientAddress.sin_addr),buf);
            if(send(clientSocket,buf,bytes,0)==SOCKET_ERROR)
            {
                printf("发送数据失败!");
                exit(-1);
            }
    
        }
    
        WSACleanup();
        exit(-1);
    
    }

    别人的程序,工程中需要用到socket

  • 相关阅读:
    I/O 请求数据包
    设备节点和设备堆栈
    观察者模式,即发布-订阅模式
    建造者模式,即生成器模式
    外观模式,即门面模式
    迪米特法则(LoD),即最少知识原则
    模板方法模式
    原型模式
    工厂方法模式
    代理模式
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2459721.html
Copyright © 2011-2022 走看看