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

  • 相关阅读:
    Google 开源的 Python 命令行库:深入 fire(二)
    开启 Django 博客的 RSS 功能
    MongoDB 分片键的选择与案例
    Log4Net写入到数据库配置过程中的一些小问题备忘
    《WCF服务编程第三版》知识点摘录
    Android调用基于.net的WebService
    心跳包实现的另一种机制
    无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
    解决SaveChanges会Hold住之前的错误的问题
    memcached工作原理与优化建议
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2459721.html
Copyright © 2011-2022 走看看