//qhostinfo類作用,獲取主機名,也可以通過主機名來查詢ip位址,或者通過ip位址來反向查詢主機名。
qstring
localhostname=
qhostinfo::localhostname(); //獲取計算機名稱
qdebug()
<<
"localhostname:"
/獲取ip位址
qhostinfo
info=
qhostinfo::fromname(localhostname); //獲取ip位址,包括ipv6
qdebug()
<<
"ipaddress:"
address,info.addresses()) //取出ipv4位址
伺服器端設定:foreach
(qhostaddress
address,
qnetworkinte***ce::alladdresses())//去除所有位址包括127.0.0.1
qtcpserver qtcpsocket
qtcpserver主要負責監聽埠,如果有鏈結 獲得客戶端套接字
if(ui->port->text().isempty())
if(ui->listen->text()==tr("偵聽"))
qdebug()<<
"listen
succeessfully!";
}當監聽到鏈結時會產生newconnect()訊號,然後建立客戶端套接字 (這個是單客戶端)
//獲取客戶端連線
m_tcpsocket
=m_tcpserver->nextpendingconnection();
//連線qtcpsocket的訊號槽,以讀取新資料
qobject::connect(m_tcpsocket,&qtcpsocket::readyread,
this,&mainwindow::socket_read_data);
qobject::connect(m_tcpsocket,&qtcpsocket::disconnected,
this,&mainwindow::socket_disconnected);
//傳送按鍵使能
ui->send->setenabled(true);
將textedit的資料送到指定的客戶端上,qdebug()
<<
"aclient
connect!";
qdebug
()<<
"send:"
<<
ui->
sendtext
->toplaintext();
qbytearraydatasend=ui->sendtext->toplaintext().tolocal8bit();
m_tcpsocket->write(datasend);
m_tcpsocket->flush();
讀取網路資料並解析:ui->sendtext->clear();
qbytearray
requestdata;
//讀取緩衝區資料
requestdata=m_tcpsocket->readall();
if(requestdata.at(0)==102)
float_data;
float_data.info[0]=twobytes4[0];
float_data.info[1]=twobytes4[1];
float_data.info[2]=twobytes4[2];
float_data.info[3]=twobytes4[3];
twobytes5=requestdata.mid(17,4);
union
youunion
float_data1;
float_data1.info[0]=twobytes5[0];
float_data1.info[1]=twobytes5[1];
float_data1.info[2]=twobytes5[2];
float_data1.info[3]=twobytes5[3];
}
requestdata.clear();多客戶端與單客戶端的區別在於產生newconnect()訊號時的處理方式//清除緩衝區
m_tcpsocket
=m_tcpserver->nextpendingconnection();
//連線qtcpsocket的訊號槽,以讀取新資料
qobject::connect(m_tcpsocket,&qtcpsocket::readyread,
this,&mainwindow::socket_read_data);
qobject::connect(m_tcpsocket,&qtcpsocket::disconnected,
this,&mainwindow::socket_disconnected);
//傳送按鍵使能
ui->send->setenabled(true);
多客戶端解析資料時的方式qdebug()
<<
"aclient
connect!";
qbytearray
message;
for(int
i=0;i
<
socket_list->length();i++)
44 網路客戶端程式設計
一 什麼是網際網路客戶端 這裡,我們將詳細了解三個網際網路協議 ftp,nntp 和 pop3,並寫出它們的客戶端程式 二 檔案傳輸 2.1 檔案傳輸網際網路協議 1 網際網路中最流行的事情就是檔案的交換,檔案交換無處不在 2 有很多協議可以供網際網路上傳輸檔案使用 3 最流行的有檔案傳輸協議 ft...
網路程式設計之多客戶端
1 reuseaddr 1 為了解決time wait狀態下不能馬上重啟程式的問題,所以伺服器要設定reuseadda屬性。使用setsockopt進行設定 2 setsockopt原型 int setsockopt int sockfd,int level,int optname,void opt...
python網路程式設計TCP服務多客戶端的服務端開發
服務多客戶端tcp服務端開發 2 方法說明 3 4 bind host,port 表示繫結埠號,host是ip位址,ip位址一般不進 行繫結,表示本機的任何乙個ip位址都行,port是埠號 5 listen backlog 表示設定監聽,backlog引數表示最大等待連線的 個數 6 accept ...