最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)聊天程序

 更新時間:2021年07月04日 08:50:07   作者:shaohuiyang  
這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)類似QQ聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)聊天程序的具體代碼,供大家參考,具體內(nèi)容如下

服務(wù)端

#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void initialization();
int main(){
//定義長度變量
 int send_len=0;
 int recv_len=0;
 int len=0;
//定義發(fā)送緩沖區(qū)和接受緩沖區(qū)
 char send_buf[100];
 char recv_buf[100];
//定義服務(wù)端套接字,接受請求套接字
 SOCKET s_server;
 SOCKET s_accept;
//服務(wù)端地址客戶端地址
 SOCKADDR_IN server_addr;
 SOCKADDR_IN accept_addr;
 initialization();
//填充服務(wù)端信息
 server_addr.sin_family=AF_INET;
 server_addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 server_addr.sin_port=htons(1234);
//創(chuàng)建套接字
 s_server=socket(AF_INET,SOCK_STREAM,0);
 if(bind(s_server,(SOCKADDR *)&server_addr,sizeof(SOCKADDR))==SOCKET_ERROR){
  cout<<"套接字綁定失?。?<<endl;
  WSACleanup();
 }else{
 cout<<"套接字綁定成功!"<<endl;
 }
//設(shè)置套接字為監(jiān)聽狀態(tài)
 if(listen(s_server,SOMAXCONN)<0){
  cout<<"設(shè)置監(jiān)聽狀態(tài)失??!"<<endl;
  WSACleanup();
 }else{
 cout<<"設(shè)置監(jiān)聽狀態(tài)成功!"<<endl;
 }
 cout<<"服務(wù)端正在監(jiān)聽連接,請稍候...."<<endl;
//接受連接請求
 len=sizeof(SOCKADDR);
 s_accept=accept(s_server,(SOCKADDR *)&accept_addr,&len);
 if(s_accept==SOCKET_ERROR){
  cout<<"連接失??!"<<endl;
  WSACleanup();
  return 0;
 }
 cout<<"連接建立,準(zhǔn)備接受數(shù)據(jù)"<<endl;
//接收數(shù)據(jù)
 while(1){
  recv_len=recv(s_accept,recv_buf,100,0);
  if(recv_len<0){
   cout<<"接受失??!"<<endl;
   break;
  }else{
  cout<<"客戶端信息:"<<recv_buf<<endl;
  }
  cout<<"請輸入回復(fù)信息:";
  cin>>send_buf;
  send_len=send(s_accept,send_buf,100,0);
  if(send_len<0){
   cout<<"發(fā)送失?。?<<endl;
   break;
  }
 }
 //關(guān)閉套接字
 closesocket(s_server);
 closesocket(s_accept);
//釋放DLL資源
 WSACleanup();
return 0;
}
void initialization(){
 //初始化套接字庫
 WORD w_req=MAKEWORD(2,2);//版本號
 WSADATA wsadata;
 int err;
 err = WSAStartup(w_req,&wsadata);
 if(err!=0){
  cout<<"初始化套接字庫失?。?<<endl;
 }else{
 cout<<"初始化套接字庫成功!"<<endl;
 }
//檢測版本號
 if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wHighVersion)!=2){
  cout<<"套接字庫版本號不符!"<<endl;
  WSACleanup();
 }else{
 cout<<"套接字庫版本正確!"<<endl;
 }
//填充服務(wù)端地址信息
 
}

客戶端

#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void initialization();
int main(){
//定義長度變量
 int send_len=0;
 int recv_len=0;
//定義發(fā)送緩沖區(qū)和接受緩沖區(qū)
 char send_buf[100];
 char recv_buf[100];
//定義服務(wù)端套接字,接受請求套接字
 SOCKET s_server;
//服務(wù)端地址客戶端地址
 SOCKADDR_IN server_addr;
 initialization();
//填充服務(wù)端信息
 server_addr.sin_family=AF_INET;
 server_addr.sin_addr.S_un.S_addr=inet_addr("192.168.1.1");
 server_addr.sin_port=htons(1234);
//創(chuàng)建套接字
 s_server=socket(AF_INET,SOCK_STREAM,0);
 if(connect(s_server,(SOCKADDR *)&server_addr,sizeof(SOCKADDR))==SOCKET_ERROR){
  cout<<"服務(wù)器連接失敗!"<<endl;
  WSACleanup();
 }else{
 cout<<"服務(wù)器連接成功!"<<endl;
 }
 
//發(fā)送,接收數(shù)據(jù)
 while(1){
  cout<<"請輸入發(fā)送信息:";
  cin>>send_buf;
  send_len=send(s_server,send_buf,100,0);
  if(send_len<0){
   cout<<"發(fā)送失??!"<<endl;
   break;
  }
  recv_len=recv(s_server,recv_buf,100,0);
  if(recv_len<0){
   cout<<"接受失敗!"<<endl;
   break;
  }else{
  cout<<"服務(wù)端信息:"<<recv_buf<<endl;
  }
  
 }
 //關(guān)閉套接字
 closesocket(s_server);
//釋放DLL資源
 WSACleanup();
return 0;
}
void initialization(){
 //初始化套接字庫
 WORD w_req=MAKEWORD(2,2);//版本號
 WSADATA wsadata;
 int err;
 err = WSAStartup(w_req,&wsadata);
 if(err!=0){
  cout<<"初始化套接字庫失?。?<<endl;
 }else{
 cout<<"初始化套接字庫成功!"<<endl;
 }
//檢測版本號
 if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wHighVersion)!=2){
  cout<<"套接字庫版本號不符!"<<endl;
  WSACleanup();
 }else{
 cout<<"套接字庫版本正確!"<<endl;
 }
//填充服務(wù)端地址信息
 
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何理解C++指針常量和常量指針

    如何理解C++指針常量和常量指針

    這篇文章主要介紹了如何理解C++指針常量和常量指針,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • C++vector的insert函數(shù)用法小結(jié)

    C++vector的insert函數(shù)用法小結(jié)

    std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復(fù)雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧
    2025-03-03
  • Qt實現(xiàn)簡易QQ聊天界面

    Qt實現(xiàn)簡易QQ聊天界面

    這篇文章主要為大家詳細(xì)介紹了Qt實現(xiàn)簡易QQ聊天界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • VC下通過系統(tǒng)快照實現(xiàn)進程管理的方法

    VC下通過系統(tǒng)快照實現(xiàn)進程管理的方法

    這篇文章主要介紹了VC下通過系統(tǒng)快照實現(xiàn)進程管理的方法,較為詳細(xì)的講述了VC下通過系統(tǒng)快照實現(xiàn)進程管理的原理與具體實現(xiàn)方法,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • C/C++的內(nèi)存管理你了解嘛

    C/C++的內(nèi)存管理你了解嘛

    這篇文章主要為大家介紹了C/C++的內(nèi)存管理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言編程之掃雷小游戲空白展開算法優(yōu)化

    C語言編程之掃雷小游戲空白展開算法優(yōu)化

    掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會,幾次調(diào)試之后,發(fā)現(xiàn)這個比三子棋要復(fù)雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實際游戲差別較大,不能使用光標(biāo),下面來詳解每一步分析
    2021-09-09
  • 深入剖析Android中init進程實現(xiàn)的C語言源碼

    深入剖析Android中init進程實現(xiàn)的C語言源碼

    這篇文章主要介紹了Android中init進程實現(xiàn)的C語言源碼,init屬性服務(wù)在安卓中屬于系統(tǒng)的底層Linux服務(wù),需要的朋友可以參考下
    2015-07-07
  • 最新clion2020激活碼附安裝教程(親測有效)

    最新clion2020激活碼附安裝教程(親測有效)

    這篇文章主要介紹了最新clion2020激活碼附安裝教程(親測有效),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • C語言實現(xiàn)三子棋小游戲

    C語言實現(xiàn)三子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解C++ 多態(tài)的實現(xiàn)及原理

    詳解C++ 多態(tài)的實現(xiàn)及原理

    這篇文章主要介紹了C++ 多態(tài)的實現(xiàn)及原理,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05

最新評論

温泉县| 松江区| 金堂县| 正定县| 明星| 嵩明县| 巴中市| 绥化市| 武邑县| 沐川县| 冀州市| 临潭县| 六枝特区| 南靖县| 隆德县| 民权县| 青阳县| 大荔县| 罗田县| 来安县| 彭州市| 富平县| 黄骅市| 漠河县| 黔江区| 若羌县| 三河市| 军事| 洪江市| 平山县| 浮山县| 辉南县| 南安市| 惠安县| 武平县| 台州市| 罗山县| 卫辉市| 江西省| 南靖县| 陈巴尔虎旗|