## 基于TCP协议的Echo服务器与客户端开发
### **一、问题描述**
实现基于TCP协议的Echo服务器与客户端开发,server能够将client端发送的数据数值加1后在发回client端。
### **二、实现过程**
主体代码全部基于Winsock2库实现,采用Visual Stdio2019进行调试编译。
#### ① Server端
主要调用win32API实现,实现流程图如下:
![img](./pic/1.png)
主要实现代码片段:
```c++
/* 定义结构体变量 */
WSAData wsaData;
/* 定义套接字版本,初始化套接字库 */
if (WSAStartup(MAKEWORD(2, 1), &wsaData) != 0)
{
MessageBoxA(NULL, "WinSock startup error", "Error", MB_OK | MB_ICONERROR);
return 0;
}
printf("[%d:%d:%d]: Start creating TCP server...\n", lt->tm_hour, lt->tm_min, lt->tm_sec);
/* 创建套接字地址类型 */
SOCKADDR_IN local;
SOCKADDR_IN from;
/* 地址结构体变量的大小 */
int locallen = sizeof(local);
int fromlen = sizeof(from);
/* 设置ipv4,设置ip地址变量端口,ip地址 */
local.sin_addr.s_addr = inet_addr("127.0.0.1"); //target PC
local.sin_port = htons(8081); // sever Port
local.sin_family = AF_INET; //IPv4 Socket
/* 定义套接字句柄 */
SOCKET TCP_socket;
/* 定义套接字类型 */
TCP_socket = socket(AF_INET, SOCK_STREAM, NULL);
/* 绑定对应的地址跟端口号 */
bind(TCP_socket, (SOCKADDR*)&local, sizeof(local));
/* 开启监听 */
listen(TCP_socket, SOMAXCONN);
/* 开启accept */
int input_num, output_num;
SOCKET new_TCP_socket; //build a new socket do new connection. the TCP_socket is just listenning not used to exchange data
new_TCP_socket = accept(TCP_socket, (SOCKADDR*)&local, &locallen); //newConnection is used to exchange data with client
```
#### ② Client端
主要调用win32API实现,实现流程图如下:
![img](./pic/2.png)
可以发现Client在初始化时与Server基本流程一致,但是不需要绑定监听以及accept Socket环节,只需进行连接并主动向服务器发出请求即可。
Client端与Server端均采用char数组来作为发送接收的缓存,采用sendto以及recvfrom函数进行数据收发。
### **三、结果演示**
#### ①Server端
![img](./pic/3.png)
接收Client端数据,并对接收数组中的每一位字符加1处理后发回Client端。
#### ③ Client端
![img](./pic/4.png)
向Server端发送数据,并接收Server端返回的数据,形成Echo。
没有合适的资源?快使用搜索试试~ 我知道了~
物联网期末大作业-基于QT搭建多人聊天室源码.zip
共295个文件
tlog:60个
png:30个
cpp:26个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 166 浏览量
2023-03-13
20:36:03
上传
评论
收藏 18.35MB ZIP 举报
温馨提示
物联网期末大作业-基于QT搭建多人聊天室源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
物联网期末大作业-基于QT搭建多人聊天室源码.zip (295个子文件)
login.pro.user.6ace240 18KB
login.pro.user.9ef9c8c.4.8-pre1 23KB
config 317B
talk.cpp 16KB
chat.cpp 14KB
form.cpp 10KB
winsocket.cpp 6KB
search.cpp 5KB
Server.cpp 4KB
Client.cpp 4KB
Server.cpp 4KB
drawer.cpp 4KB
emotion.cpp 3KB
register.cpp 3KB
Client.cpp 2KB
widget.cpp 2KB
wechat.cpp 2KB
sunshine.cpp 2KB
chatthread.cpp 1011B
main.cpp 1010B
two.cpp 1006B
mymessagebox.cpp 971B
mythread.cpp 527B
one.cpp 494B
mylistwidget.cpp 367B
mychatwidget.cpp 314B
friendmsg.cpp 281B
global.cpp 234B
checkcombox.cpp 0B
description 73B
exclude 240B
projekt_serwer_TCP.exe 67KB
projekt_serwer_TCP.exe 67KB
TCP_server.exe 67KB
projekt_klient_TCP.exe 67KB
projekt_klient_TCP.exe 67KB
TCP_client.exe 67KB
TCP_server.exe 62KB
TCP_client.exe 62KB
UDP_client.exe 62KB
UDP_server.exe 62KB
TCP_client.vcxproj.filters 962B
TCP_server.vcxproj.filters 962B
UDP_server.vcxproj.filters 962B
UDP_client.vcxproj.filters 962B
red69-2.gif 3.17MB
blue70-2.gif 2.77MB
purple0.4.gif 501KB
talk.h 2KB
form.h 1KB
search.h 1KB
chat.h 1KB
widget.h 835B
wechat.h 831B
winsocket.h 822B
sunshine.h 576B
register.h 566B
emotion.h 471B
drawer.h 452B
mythread.h 387B
mymessagebox.h 371B
mylistwidget.h 364B
mychatwidget.h 361B
two.h 336B
friendmsg.h 297B
one.h 249B
global.h 245B
checkcombox.h 73B
HEAD 197B
HEAD 197B
HEAD 32B
HEAD 23B
myappico.ico 9KB
vc142.idb 587KB
vc142.idb 579KB
vc142.idb 579KB
vc142.idb 579KB
pack-413ef595d4ec1e56f0e17d6e88ec0f0e643a5355.idx 9KB
projekt_serwer_TCP.ilk 475KB
projekt_serwer_TCP.ilk 475KB
TCP_server.ilk 464KB
projekt_klient_TCP.ilk 460KB
projekt_klient_TCP.ilk 460KB
TCP_client.ilk 460KB
TCP_server.ilk 451KB
UDP_client.ilk 433KB
UDP_server.ilk 429KB
TCP_client.ilk 422KB
index 29KB
10.jpeg 86KB
sunshine.jpg 88KB
10.JPG 66KB
touxiang02.jpg 48KB
11.jpg 35KB
school.jpg 24KB
QQ.jpg 21KB
sun.jpg 7KB
kobe_1.jpg 6KB
touxiang01.jpg 2KB
em11.jpg 1KB
共 295 条
- 1
- 2
- 3
资源评论
oligaga
- 粉丝: 52
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- flowable-designer-5.22.0.zip
- threadmanager.cpp
- 腾讯云小程序 - 一站式开发与部署平台
- 基于JSP+Java+Servlet采用MVC模式开发的购物网站+源码(毕业设计&课程设计&项目开发)
- fastgestures安装包,模拟mac的触控板收拾,两指代表右击, 三指拖拽
- 基于组态王的升降式横移立体车库控制系统+源码(毕业设计&课程设计&项目开发)
- 基于python+Django和协同过滤算法的电影推荐系统+源码(毕业设计&课程设计&项目开发)
- 环境配置 vscode+jupyter
- 项目全部代码,还包含使用到的图片
- 项目全部代码,还包含使用到的图片
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功