Linux-UDP编程传输文件并显示-含connect与不含connect(C)
老师教的是真好,我又能学到东西,又能
水写文章。
这些百度都找不到,真不错。
UDP编程简介
- UDP与TCP编程是一组对应的网络编程,TCP是有连接的,UDP是无连接的。
- UDP编程又分为使用connect()与不使用connect()的,这个函数的使用不代表它是有连接的,只是使用后,可以一次性发送多条信息。
- UDP中的connect()与TCP中的connect()使用方法类似。
实现功能
- 服务器启动后,等待客户机发送文件。
- 客户机启动后,将IOT2018文件的信息打印,并传输给服务器。
- 服务器接受到客户机数据后,打印数据,并将数据保存到tempfile-IOT2018中。
- 生成的tempfile-IOT2018文件对于用户是不可读的,需要修改权限后才可读。
- 含connect与不含connect的UDP执行过程一致、服务器代码一致,客户机主体代码一致。
运行示例
服务器代码
- 前面是头文件,如果缺什么直接百度加上去就好。
- 14~37行,为UDP编程中,服务器代码内容。
- 第26行的31000,是端口号。
- 如果端口被占用,可以改变端口号,或者使用ps -ef|grep 31000可以查看使用该端口的进程,使用kill pid可以结束该进程。
- PID查看,可参考fork()产生的子进程ppid有时不是父进程pid-Linux中的僵尸进程处理
- 第37行,是接受客户机的内容,存放至buffer字符串中。
- 第26行的31000,是端口号。
- 第38~41行,是输出接受的字符,并保存到tempfile-IOT2018文件中。
- 注:忘记关闭文件了,41到42行间应该加一个
close(destFile);
客户机(无connect)代码
- 前面是头文件,如果缺什么直接百度加上去就好。
- 12~25行,为UDP编程中,客户机代码内容。
- 24行中,31000是表示端口号。
- 如果端口被占用,可以改变端口号,或者使用ps -ef|grep 31000可以查看使用该端口的进程,使用kill pid可以结束该进程。
- PID查看,可参考fork()产生的子进程ppid有时不是父进程pid-Linux中的僵尸进程处理
- 24行中,31000是表示端口号。
- 27~30行,为文件信息读取,并打印。
- 33行,为UDP信息传输。
- 35/36行,关闭文件及链接。
客户机(有connect)代码
- 将上面客户机(无connect)的33行,换成下面32到37行即可。
共有 0 条评论