计算机网络技术实验TCP,计算机网络实验4 TCP并发服务器设计

傻瓜式操作教程第二弹

题目:编写服务器和客户端程序,保证能有多个客户端连接该服务器,并修改代码实现在客户端输入"GetTime"返回系统时间。

先说一句老师第四个题目中说的修改服务器代码,是不足够的,因为和上次实验有所区别的是客户端代码,如果只修改服务器是会出bug的。具体怎么改下面再说

接下来是傻瓜式操作教程

1.系统

废话少数,别问我为啥非要发桌面,我超级喜欢这张桌面的,发博客不发出来,怎么镇得住场子!

7ec0bd0f6076

桌面

2.打开老师要求的文件夹,其实文件夹随意就好

和上次一样的两种方法,我就把复杂的写出来,简单的操作就不需要我了,看上一篇博客,一看就会计算机网络实验3 UDP套接字编程

依旧是不要抄用户名,自己理解一下

cd /home/XXX

vi tcpserver.c

7ec0bd0f6076

我是强烈不建议在这里敲的,因为这样很麻烦,如果你想可以按i进入编辑模式在这里敲代码,不想的话就用:wq保存再退出,自己注意。。。这样保存之后再gedit打开它去编辑,会方便很多。

7ec0bd0f6076

3.敲代码

gedit tcpserver.c

7ec0bd0f6076

保存退出,这就是服务器的最后代码。然后客户端只需要修改文件名就可以了,其他的都一样。而我开始就说了,只修改服务器是会有bug的,所以我们再修改客户端。我说的错误是什么呢,就是说你如果先输入一串长的字符串,再输入短的,你会发现第二次的输入会有上一次的字符串片段存在。因此有两种方式修改

一种是我们去客户端把read修改为

int n = read(sockfd, recvline, MAXLINE);

if ( n == 0)

printf("str_cli: server terminated prematurely");

else

recvline[n] = '\0';

这样就是不管我们后面有没有多余的数据,反正到我想要的输出就停止了

另一种是在write后面加一个memset

write(sockfd, sendline, strlen(sendline));

memset(recvline,0,sizeof recvline);

这样就是每次我从服务器那里接收信息之前都先把recvline清空一下,把上次的数据清理掉不让他来打扰我。

这样就没有bug了,老师说功能性实现就可以,但是我强迫症,怎么能不完美点呢。

接下来就是编译运行,这个用说什么?这么简单的东西不会的自己看上一篇博客上面有链接。看了就当给我增加访问量了

结束,自己找老师检查吧,各个函数意思。。没时间写了,这个博客还是抽时间写的,忙死orz orz orz,不会的就自求多福,自己查查别的博客吧

最近这个博文被另一个智障博客社区的客服删了,所以在这边另外发一次。。。。正好发完这个是做完实验的晚上,说一下,记得自己看一眼各个函数功能,省的老师问你们不会(`・ω・´),反正我都答上了,但是和我一起检查的没有一个能全答出来的(~ ̄▽ ̄)~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值