前言:網路編程就是撰寫程式使兩臺聯網的計算機相互交換資料,
例子:服務器端開啟一個socket,監聽9999埠,客戶端向服務器端發起請求,服務器端收到請求以后,給客戶端發送一句:"hello world";
服務器端:

step1:呼叫socket函式創建套接字,
step2:呼叫bind函式分配ip和埠號,
step3:呼叫listen函式轉為可接受請求狀態,
step4:呼叫accept函式受理連接請求,

1#include2#include3#include5#include6#include78usingnamespacestd;910intmain()11 {12intserv_sock = socket(PF_INET,
SOCK_STREAM,0);13if(serv_sock == -1) {14cout<<"socket() error"<< endl;15return0;16 }1718 sockaddr_in serv_addr;19serv_addr.sin_family = AF_INET;20serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");21serv_addr.sin_port =
htons(9999);2223if(bind(serv_sock, (sockaddr*) &serv_addr,sizeof(serv_addr)) == -1) {24cout<<"bind() error"<< endl;25 close(serv_sock);26return0;27 }2829if(listen(serv_sock,5) == -1) {30cout<<"listen() error"<< endl;31 close(serv_sock);32return0;33
}3435 sockaddr_in clnt_addr;36socklen_t clnt_add_size =sizeof(clnt_addr);37cout<<"start listen"<< endl;38intclnt_sock = accept(serv_sock, (sockaddr*) &clnt_addr, &clnt_add_size);39if(clnt_sock == -1) {40cout<<"accept() error"<< endl;41
close(clnt_sock);42 close(serv_sock);43return0;44 }4546stringmessage ="hello world";47 write(clnt_sock, message.c_str(), message.size());4849 close(clnt_sock);50 close(serv_sock);5152return0;53}

客戶端:
step1:呼叫socket函式創建套接字,
step2:呼叫connect函式想服務器端發送連接請求,

1#include2#include3#include5#include6#include78usingnamespacestd;910intmain()11 {12intclnt_sock = socket(PF_INET, SOCK_STREAM,0);13if(clnt_sock == -1) {14cout<<"socket() error"<< endl;15return0;16 }1718 sockaddr_in
serv_addr;19serv_addr.sin_family = AF_INET;20serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");21serv_addr.sin_port = htons(9999);2223if(connect(clnt_sock, (sockaddr*) &serv_addr,sizeof(serv_addr)) == -1) {24cout<<"connect() error"<< endl;25
close(clnt_sock);26return0;27 }2829charmessage[100];30intstr_len = read(clnt_sock, message,sizeof(message)-1);31if(str_len == -1) {32cout<<"read failed"<< endl;33 close(clnt_sock);34return0;35 }3637cout<< message << endl;38 close(clnt_sock);39return0;40}
示例中用到了write和read函式,linux中一切都被看作檔案,所以套接字也可以像操作檔案一樣去操作,
如果你想要更多的資料和素材請加入我的企鵝圈哦!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/192264.html
標籤:C++
上一篇:Qt5+MSVC2015 32位編譯器報錯: qalgorithms.h: error C3615 不會生成常數運算式
