建立简单的套接字

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

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

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

服务端的步骤一般为

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 }

 

就可以连上了

posted @ 2013-12-20 23:03  尽子轨  阅读(264)  评论(0编辑  收藏  举报