最近發現學計算機的真的要好好做筆記啊。。。前兩天有個學長的聊天工具我是知道沒有初始化套接字,可是一時竟然忘記了載入版本庫的那幾行**,真是汗。。。硬是回來看自己的程式才知道。。。
今晚複習了一下套接字的建立
有服務端和客服端兩個部分
服務端的步驟一般為
1、初始化套接字版本
1//初始化版本
2wsadata wsadata;
3 word ver=makeword(2,2);4
interr;
5if((err=wsastartup (ver,&wsadata))=!0)6
9if(lobyte(wsadata.wversion)!=2||hibyte(wsadata.wversion)!=2)10
2、建立套接字
3、繫結
4、監聽
5、接收
具體**如下:
1 #include2 #include3 #include4intmain()514
if(lobyte(wsadata.wversion)!=2||hibyte(wsadata.wversion)!=2)15
1920
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
2930
socket client;
3132
33 client=accept(sever,0,0
);34
if(client==invalid_socket)
3538
39else
40 std::cout<<"
連線成功!
"<41return0;
42 }
客戶端**:
1 #include2 #include3 #include4intmain()513
if(lobyte(wsdata.wversion)!=2||hibyte(wsdata.wversion)!=2)14
18socket 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");
24if(connect(client,(sockaddr*)&client_in,sizeof(client_in))==0)25
28return0;
29 }
就可以連上了
18 3 2 建立套接字
套接字是通過標準的 unix 檔案描述符和其他的程式通訊的乙個方法。套接字在使用前必須先被建立,建立套接字的系統呼叫為 socket 它的一般形式是 int socket int domain,int type,int protocol 建立出來的套接字是一條通訊線路的乙個端點,domain 引數負...
4 6 2 建立套接字
當 socket 函式返回 invalid socket 時,呼叫 showerrormsg 函式顯示呼叫失敗的原因。建立套接字程式清單如下。建立 windows socket shost socket af inet,sock stream,ipproto tcp if invalid socke...
建立套接字失敗
if afxsocketinit 執行程式,會發現彈出對話方塊 載入套接字型檔失敗。原因是因為該段 新增的位置不對。必須寫在initinstance函式的開始位置,建立視窗前 考慮到afxsocketinit 函式只能載入1.1版本的套接字型檔,若要載入其他版本的套接字型檔,則需要新增如下 word...