欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

服務端

#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];
//定義服務端套接字,接受請求套接字
 SOCKET s_server;
 SOCKET s_accept;
//服務端地址客戶端地址
 SOCKADDR_IN server_addr;
 SOCKADDR_IN accept_addr;
 initialization();
//填充服務端信息
 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;
 }
//設置套接字為監(jiān)聽狀態(tài)
 if(listen(s_server,SOMAXCONN)<0){
  cout<<"設置監(jiān)聽狀態(tài)失敗!"<<endl;
  WSACleanup();
 }else{
 cout<<"設置監(jiān)聽狀態(tài)成功!"<<endl;
 }
 cout<<"服務端正在監(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<<"連接建立,準備接受數(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<<"請輸入回復信息:";
  cin>>send_buf;
  send_len=send(s_accept,send_buf,100,0);
  if(send_len<0){
   cout<<"發(fā)送失?。?<<endl;
   break;
  }
 }
 //關閉套接字
 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;
 }
//填充服務端地址信息
 
}

客戶端

#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];
//定義服務端套接字,接受請求套接字
 SOCKET s_server;
//服務端地址客戶端地址
 SOCKADDR_IN server_addr;
 initialization();
//填充服務端信息
 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<<"服務器連接失?。?<<endl;
  WSACleanup();
 }else{
 cout<<"服務器連接成功!"<<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<<"服務端信息:"<<recv_buf<<endl;
  }
  
 }
 //關閉套接字
 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;
 }
//填充服務端地址信息
 
}

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

相關文章

  • C++變量存儲的生命周期與作用域?qū)嵗a精講

    C++變量存儲的生命周期與作用域?qū)嵗a精講

    這篇文章主要介紹了C++變量存儲的生命周期與作用域,從創(chuàng)建到消亡的完整過程,例如人從出生到死亡的整個過程就是一個生命周期。本文將通過示例為大家詳細講講,感興趣的可以學習一下
    2022-10-10
  • C語言中的盜賊(小偷)問題詳解

    C語言中的盜賊(小偷)問題詳解

    大家好,本篇文章主要講的是C語言中的盜賊(小偷)問題詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Qt繪制簡單時鐘

    Qt繪制簡單時鐘

    這篇文章主要為大家詳細介紹了Qt繪制簡單時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • c語言生成隨機數(shù)的方法(獲得一組不同的隨機數(shù))

    c語言生成隨機數(shù)的方法(獲得一組不同的隨機數(shù))

    c語言生成一組不同的隨機數(shù),大家參考使用吧
    2013-12-12
  • 詳解C語言數(shù)組中是以列優(yōu)先嗎

    詳解C語言數(shù)組中是以列優(yōu)先嗎

    這篇文章主要給大家介紹了關于C語言指針名稱及所指變量的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C語言具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • C語言實現(xiàn)數(shù)獨游戲

    C語言實現(xiàn)數(shù)獨游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)數(shù)獨游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++超詳細講解函數(shù)對象

    C++超詳細講解函數(shù)對象

    在c++中,我們把所有能當作函數(shù)使用的對象統(tǒng)稱為函數(shù)對象。它是實現(xiàn)operator()的任何類型,此運算符被稱為調(diào)用運算符,當調(diào)用此操 作符時,其表現(xiàn)形式如同普通函數(shù)調(diào)用一般,因此取名叫函數(shù)對象
    2022-06-06
  • C語言實現(xiàn)將字符串轉換為數(shù)字的方法

    C語言實現(xiàn)將字符串轉換為數(shù)字的方法

    這篇文章主要介紹了C語言實現(xiàn)將字符串轉換為數(shù)字的方法,涉及系統(tǒng)函數(shù)atoi()函數(shù)的使用技巧,需要的朋友可以參考下
    2014-12-12
  • C語言鏈表實現(xiàn)簡單圖書管理系統(tǒng)

    C語言鏈表實現(xiàn)簡單圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言鏈表實現(xiàn)簡單圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++四種case的詳細介紹小結

    C++四種case的詳細介紹小結

    本文主要介紹了C++四種case的詳細介紹小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05

最新評論