Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】+Jack_Lin+实现一个简单的TCP聊天客户端
发布于 2018-08-01 10:41:29 浏览:1559
订阅该版
* 本帖最后由 Jack_Lin 于 2018-8-1 10:41 编辑 * 大家好,十分荣幸可以参加这一次RT-Thread的网络编程学习。在完成群主布置的任务后,进入第一周作业。下面是我在完成作业时的分析和步骤,如果有什么不对,麻烦大家指教指教。谢谢大家。 首先,我们来先看看第一周作业题目:  大体的意思是在"183.193.243.90",端口为11222上存在一个TCP Server,同时这个TCP Server是一个聊天室。可以接受客户端发出的特定指令并返回相应信息。在这里必须注意的是:客户端向Server发送命令时必须在命令后加"
"。否则,Server会认为你发出的命令还没发送完毕,不会解析,也就是不会执行。 看到这个题目后,我没有使用网络编程助手,而是第一时间用Python写了一个TCP Client。利用socket和threading模块实现了一个简易的网络编程助手,部分代码如下:  可以看到代码中有两个函数,这两个函数分别对应一个线程,用于从服务器接受数据和向服务器发送数据。(注意:python版本为3.6)。 在这个简易网络编程助手,我特别的注意到,当我们输入who和look指令后,服务器会把信息分两次返回,这点会重要。因为我们使用recv函数时,整个线程会Blocked。所以我们在函数中不能多调用一次或者少调用一次。因为当我们多调用一次会做成整个函数Blocked而无法运行;而少调用一次也会让这次返回的信息冲掉下一次返回的信息,做成永远都无法接受到当前命令的返回信息,这是一个很尴尬的问题。如果没明白我说什么,请你自己尝试一下。 因为这种情况,我本人有比较懒,不想处理这些情况。所以我在qemu虚拟机采用“多线程”的方式来实现作业的要求的功能,整体思路和我的python简易网络编程助手一样。更加有趣的是:python的多线程也可以用“多线程”来表示,对此感兴趣,可以查阅相关资料。 程序的总体思路:专门启用一个“线程”来接受服务器返回的信息。其他功能都单独实现。 具体步骤: 1.创建一个TCP Client用于连接远程的服务器。 2.开启一个线程来专门接受服务器发回来的数据。 3.调用相关命令。.. 因为我是新建一个C语言源文件来写作业。在上面所说的步骤之前,首先把先创建的C语言文件添加进项目(假设大家都做过qemu的全部网络实验),在.... t-thread\bsp\qemu-vexpress-a9\packages\samples-latest
etwork\tcpclient文件夹中新建一个文字为homework的c文件,返回上一目录,编辑SConscript文件,添加红色框框中的代码:  然后在...... t-thread\bsp\qemu-vexpress-a9编辑rtconfig.h(在/* network sample options */),添加红色框框中的代码:  以上步骤,就是把homework.c添加到该项目。把这步做完之后就可以写我们的程序了。 具体写程序的方法就不再陈诉,具体可以参考我的附件。 我们来看看作业的要求步骤:  接下来,我们开始我们的步骤: 第一步:连接上我们的远方的服务器:  第二步:使用login命令登陆服务器:  与此同时,我们可以看到其他同学也在做作业:  第三步:使用say命令:  我们可以在python程序看到,一个用户名为Jack_Lin正在发送信息,确认我们发送正确:  第四步:使用look命令:  第五步:使用who命令:  第六步:使用say命令说看见有哪些人在聊天室:  第七步:使用say命令说自己准备logout:  第八步:使用logout命令退出:  与此同时,在我的python程序中可以看到:  到这里,就完成了整体任务了,谢谢大家。源码在附件。   下载附件 [TCPclient.py](https://oss-club.rt-thread.org/uploads/201808/01/104031zw2i33xzzk93buam.attach) 下载附件 [homework.c](https://oss-club.rt-thread.org/uploads/201808/01/104031f9dzp3iz32pvacqz.attach)
查看更多
1
个回答
默认排序
按发布时间排序
yqiu
2018-08-01
这家伙很懒,什么也没写!
:victory:
撰写答案
登录
注册新账号
关注者
0
被浏览
1.6k
关于作者
Jack_Lin
这家伙很懒,什么也没写!
提问
3
回答
2
被采纳
0
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
在 RT-Thread Studio 环境中为 ART-Pi 2 移植 CherryUSB(以 usb_device 为例)
2
嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
3
使用官方BOOT升级,看这一篇就够了?(以STM32F407VGT6为例)
4
可以使用MQTT连接AI大模型吗
5
RT-Thread离线包制作
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
cubemx
ESP8266
WIZnet_W5500
UART
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
keil_MDK
中断
rt_mq_消息队列_msg_queue
Debug
SFUD
msh
ulog
C++_cpp
at_device
本月问答贡献
聚散无由
8
个答案
6
次被采纳
RTT_逍遥
7
个答案
2
次被采纳
加缪
2
个答案
2
次被采纳
踩姑娘的小蘑菇
6
个答案
1
次被采纳
a1012112796
4
个答案
1
次被采纳
本月文章贡献
wake_mirco
2
篇文章
7
次点赞
mushroom
1
篇文章
8
次点赞
张世争
1
篇文章
7
次点赞
rv666
1
篇文章
4
次点赞
Jack_____
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部