激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - C++實(shí)現(xiàn)聊天程序

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

2021-11-21 16:23shaohuiyang C/C++

這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)類(lèi)似QQ聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

服務(wù)端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void initialization();
int main(){
//定義長(zhǎng)度變量
 int send_len=0;
 int recv_len=0;
 int len=0;
//定義發(fā)送緩沖區(qū)和接受緩沖區(qū)
 char send_buf[100];
 char recv_buf[100];
//定義服務(wù)端套接字,接受請(qǐng)求套接字
 SOCKET s_server;
 SOCKET s_accept;
//服務(wù)端地址客戶(hù)端地址
 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īng)狀態(tài)
 if(listen(s_server,SOMAXCONN)<0){
  cout<<"設(shè)置監(jiān)聽(tīng)狀態(tài)失敗!"<<endl;
  WSACleanup();
 }else{
 cout<<"設(shè)置監(jiān)聽(tīng)狀態(tài)成功!"<<endl;
 }
 cout<<"服務(wù)端正在監(jiān)聽(tīng)連接,請(qǐng)稍候...."<<endl;
//接受連接請(qǐng)求
 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<<"客戶(hù)端信息:"<<recv_buf<<endl;
  }
  cout<<"請(qǐng)輸入回復(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(){
 //初始化套接字庫(kù)
 WORD w_req=MAKEWORD(2,2);//版本號(hào)
 WSADATA wsadata;
 int err;
 err = WSAStartup(w_req,&wsadata);
 if(err!=0){
  cout<<"初始化套接字庫(kù)失敗!"<<endl;
 }else{
 cout<<"初始化套接字庫(kù)成功!"<<endl;
 }
//檢測(cè)版本號(hào)
 if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wHighVersion)!=2){
  cout<<"套接字庫(kù)版本號(hào)不符!"<<endl;
  WSACleanup();
 }else{
 cout<<"套接字庫(kù)版本正確!"<<endl;
 }
//填充服務(wù)端地址信息
 
}

客戶(hù)端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void initialization();
int main(){
//定義長(zhǎng)度變量
 int send_len=0;
 int recv_len=0;
//定義發(fā)送緩沖區(qū)和接受緩沖區(qū)
 char send_buf[100];
 char recv_buf[100];
//定義服務(wù)端套接字,接受請(qǐng)求套接字
 SOCKET s_server;
//服務(wù)端地址客戶(hù)端地址
 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<<"請(qǐng)輸入發(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(){
 //初始化套接字庫(kù)
 WORD w_req=MAKEWORD(2,2);//版本號(hào)
 WSADATA wsadata;
 int err;
 err = WSAStartup(w_req,&wsadata);
 if(err!=0){
  cout<<"初始化套接字庫(kù)失敗!"<<endl;
 }else{
 cout<<"初始化套接字庫(kù)成功!"<<endl;
 }
//檢測(cè)版本號(hào)
 if(LOBYTE(wsadata.wVersion)!=2||HIBYTE(wsadata.wHighVersion)!=2){
  cout<<"套接字庫(kù)版本號(hào)不符!"<<endl;
  WSACleanup();
 }else{
 cout<<"套接字庫(kù)版本正確!"<<endl;
 }
//填充服務(wù)端地址信息
 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/shaohuiyang/article/details/79301580

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 精品99在线视频 | 视频一区二区精品 | 久久精品性视频 | 一色屋任你操 | 一级电影在线观看 | 久久久久久久久久久久久久av | 免费播放欧美毛片 | 欧美成人精品一区二区男人小说 | 国产日韩a| 日韩欧美中文字幕视频 | 国产呻吟 | 欧美顶级毛片在线播放小说 | 久久久成人999亚洲区美女 | 成人不卡免费视频 | 亚洲最大中文字幕 | 国产在线欧美日韩 | 免费播放欧美毛片 | 午夜精品老牛av一区二区三区 | 精品久久久av | 国产草草视频 | 国产午夜精品久久久久久免费视 | 久久久国产一级片 | 成人精品| 99爱福利视频在线观看 | 成人一级黄色 | 国产九九九九 | 亚洲五码在线观看视频 | 亚洲第一视频在线 | 欧美视频网 | 草草久久久 | fc2成人免费人成在线观看播放 | 国产成人在线综合 | 伦一区二区三区中文字幕v亚洲 | 久久国语对白 | 99精品国产在热久久婷婷 | 国产69精品久久久久久 | 少妇一级淫片免费放4p | 成人av一区二区免费播放 | 在线a | 涩涩伊人| 国产成人在线看 |