• 建立简单的套接字


    最近发现学计算机的真的要好好做笔记啊。。。前两天有个学长的聊天工具我是知道没有初始化套接字,可是一时竟然忘记了加载版本库的那几行代码,真是汗。。。硬是回来看自己的程序才知道。。。

    今晚复习了一下套接字的建立

    有服务端和客服端两个部分

    服务端的步骤一般为

    1、初始化套接字版本

     1    //初始化版本
     2     WSADATA wsadata;
     3     WORD ver=MAKEWORD(2,2);
     4     int err;
     5     if((err=WSAStartup (ver,&wsadata))=!0)
     6     {
     7         return ;
     8     }
     9     if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wVersion)!=2)
    10     {
    11         WSACleanup();
    12         return;
    13     }

    2、创建套接字

    3、绑定

    4、监听

    5、接收

    具体代码如下:

     1 #include<iostream>
     2 #include<afx.h>
     3 #include<winsock.h>
     4 int main()
     5 {
     6     //初始化版本
     7     WSADATA wsadata;
     8     WORD ver=MAKEWORD(2,2);
     9     int err;
    10     if((err=WSAStartup (ver,&wsadata))=!0)
    11     {
    12         return ;
    13     }
    14     if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wVersion)!=2)
    15     {
    16         WSACleanup();
    17         return;
    18     }
    19 
    20     SOCKET sever;
    21     sever=socket(AF_INET,SOCK_STREAM,0);
    22     SOCKADDR_IN sever_in;
    23     sever_in.sin_family=AF_INET;
    24     sever_in.sin_port=htons(1024);
    25     sever_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    26     bind(sever,(SOCKADDR*)&sever_in,sizeof(sever_in));
    27     listen(sever,2);
    28     
    29 
    30     SOCKET client;
    31 
    32 
    33     client=accept(sever,0,0);
    34     if(client==INVALID_SOCKET)
    35     {
    36         std::cout<<"连接失败!"<<std::endl;
    37     }
    38     
    39     else
    40         std::cout<<"连接成功!"<<std::endl;
    41     return 0;
    42 }

    客户端代码:

     1 #include<iostream>
     2 #include<afx.h>
     3 #include<winsock.h>
     4 int main()
     5 {
     6     WSADATA  wsdata;
     7     WORD ver=MAKEWORD(2,2);
     8     int err;
     9     if((err=WSAStartup (ver,&wsdata))=!0)
    10     {
    11         return 0;
    12     }
    13     if(LOBYTE(wsdata.wVersion)!=2||HIBYTE(wsdata.wVersion)!=2)
    14     {
    15         WSACleanup();
    16         return 0;
    17     }
    18     SOCKET client;
    19     client=socket(AF_INET,SOCK_STREAM ,0);
    20     SOCKADDR_IN client_in;
    21     client_in.sin_family=AF_INET;
    22     client_in.sin_port=htons(1024);
    23     client_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    24     if(connect(client,(SOCKADDR*)&client_in,sizeof(client_in))==0)
    25     {
    26         std::cout<<"连接成功"<<std::endl;
    27     }
    28     return 0;
    29 }

    就可以连上了

  • 相关阅读:
    djinn:1 Vulnhub Walkthrough
    面试题:HTTP协议工作原理
    面试题:URI和URL的区别
    面试题:http和https的区别?什么是http无状态协议?什么是本地存储?
    Vue+Element 踩坑记录
    面试题:Vue的生命周期
    面试题:组件封装
    面试题:vuex
    面试题:callback
    面试题---华为机试在线训练:字符串最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/newworldcom/p/3484660.html
Copyright © 2020-2023  润新知