gpt4 book ai didi

C++实现聊天程序

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++实现聊天程序由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了C++实现聊天程序的具体代码,供大家参考,具体内容如下 。

服务端 。

?
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(){
//定义长度变量
  int send_len=0;
  int recv_len=0;
  int len=0;
//定义发送缓冲区和接受缓冲区
  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);
//创建套接字
  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;
  }
//设置套接字为监听状态
  if (listen(s_server,SOMAXCONN)<0){
   cout<< "设置监听状态失败!" <<endl;
   WSACleanup();
  } else {
  cout<< "设置监听状态成功!" <<endl;
  }
  cout<< "服务端正在监听连接,请稍候...." <<endl;
//接受连接请求
  len= sizeof (SOCKADDR);
  s_accept=accept(s_server,(SOCKADDR *)&accept_addr,&len);
  if (s_accept==SOCKET_ERROR){
   cout<< "连接失败!" <<endl;
   WSACleanup();
   return 0;
  }
  cout<< "连接建立,准备接受数据" <<endl;
//接收数据
  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<< "发送失败!" <<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;
  }
//填充服务端地址信息
 
}

客户端 。

?
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(){
//定义长度变量
  int send_len=0;
  int recv_len=0;
//定义发送缓冲区和接受缓冲区
  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);
//创建套接字
  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;
  }
 
//发送,接收数据
  while (1){
   cout<< "请输入发送信息:" ;
   cin>>send_buf;
   send_len=send(s_server,send_buf,100,0);
   if (send_len<0){
    cout<< "发送失败!" <<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;
  }
//填充服务端地址信息
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

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

最后此篇关于C++实现聊天程序的文章就讲到这里了,如果你想了解更多关于C++实现聊天程序的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com