最近发现学计算机的真的要好好做笔记啊。。。前两天有个学长的聊天工具我是知道没有初始化套接字,可是一时竟然忘记了加载版本库的那几行代码,真是汗。。。硬是回来看自己的程序才知道。。。
今晚复习了一下套接字的建立
有服务端和客服端两个部分
服务端的步骤一般为
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 }
就可以连上了