网络编程
佳佳鸽
这个作者很懒,什么都没留下…
展开
-
TCP数据传输过程中数据粘包的产生与处理
TCP数据传输过程中数据粘包的产生:TCP网络传输的应用程序有时会出现粘包现象,因为tcp传输没有消息边界,发送方发送若干次数据的时候,数据粘连在一起,接收方一次性将发送方多次发送的数据一起接收,产生接收数据的粘连。(即发送方发送的若干包数据到接收方接收时粘成一包)如果是发送需要连续发送的内容,比如文本文件、音视频文件、压缩包等大文件,则粘包对结果没有影响;但是如果每次发送的内容是相互独立的话,则粘包对结果有影响,比如发消息 : “jiajia”, “hello”,这是两个信息,分别执行不同的功能,但是原创 2020-10-19 09:04:39 · 928 阅读 · 0 评论 -
编写一个基于 UDP 的文件收发软件,用来将文件发送给开发板。
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。/* server部分:*/#include <stdio.h> #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <si原创 2020-09-12 21:01:59 · 409 阅读 · 0 评论 -
编写一个UDP数据报发送器,定时将系统时间发送给组播号为224.0.0.100的主机。(UDP组播)
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。具体代码如下:/* server部分:*/#include <stdio.h> #include <time.h>#include <stdlib.h>#include <signal.h>#include <unistd.h>#include <string.h>#include <原创 2020-09-12 20:49:35 · 930 阅读 · 0 评论 -
编写一个UDP服务器,将来自任何一个客户端的消息群发给其他客户端。(UDP广播)
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。需要注意的问题:server部分:接收客户端发来的数据,通过设定好的广播IP地址、端口号广播出去。client部分: 所有客户端的IP地址不相同,端口号需要与server设定的端口号一致。/* server部分:*/#include <stdio.h> #include <stdlib.h>#include <signal.h>原创 2020-09-12 13:23:31 · 740 阅读 · 0 评论 -
写一个基于 UDP 的镜子服务器,将客户端发送过来的数据照原样反弹回去。
料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。运行结果:/* server部分:*/#include <stdio.h> #include <stdlib.h>#include <signal.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>int udpsock原创 2020-09-10 22:29:26 · 255 阅读 · 0 评论 -
编写一个基于命令行的获取物流快递信息的程序。(云市场快递API、HTTP、JSON)
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。运行结果:main.c部分:#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netdb.h>#include <s原创 2020-09-10 21:04:37 · 324 阅读 · 0 评论 -
编写一个基于命令行的获取天气预报的程序。(云市场天气API、HTTP、JSON )
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。运行效果:main函数:#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netdb.h>#include <str原创 2020-09-10 19:13:39 · 621 阅读 · 0 评论 -
编写一个基于TCP的文件收发软件,用来将文件发送给开发板。如果发送的是图片,则显示到开发板的屏幕上。
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。具体代码如下:电脑端:/* 客户端部分:*/#include "show.h"int src;void fun1(){ close(src); exit(0);}int main(char **argv){ signal(SIGINT,fun1); src = socket(AF_INET, SOCK_STREAM, 0); //创原创 2020-09-10 08:50:28 · 425 阅读 · 0 评论 -
编写一个TCP通信,接收来自各方TCP客户端的信息,将信息直接输出到屏幕上,并将信息群发给所有已经连上的客户端。
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。编写一个TCP吐槽聊天室,接收来自各方TCP客户端的吐槽信息,将信息直接输出到屏幕上,并将信息群发给所有已经连上的客户端。要求:1.客户端可以根据需要,发送群发消息,或者指定某个人发送私聊消息。2.客户端可以屏蔽别人的群发消息。3.服务端仅展示群发消息,不展示私聊消息。4.当客户端指定私聊的对端不存在或者已经下线时,服务端给发送者必要的提示。运行结果:/* 服务器原创 2020-09-09 21:03:12 · 326 阅读 · 0 评论 -
编写一个TCP吐槽聊天室,接收来自各方TCP客户端的吐槽信息,将信息直接输出到屏幕上,并将信息群发给所有已经连上的客户端。
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。编写一个TCP吐槽聊天室,接收来自各方TCP客户端的吐槽信息,并将信息直接输出到屏幕上,并将信息群发给所有已经连上的客户端。要求:1.能随时接收任何客户端的连接和信息。2.建立一定的防刷屏机制,使得客户端的吐槽不能太快。3.显示当前的连接总数。4.如果使用多线程或者多进程,注意防范僵尸。5.采用多路复用模式实现服务器。运行结果:具体代码如下:/* 服务器部分原创 2020-09-09 15:34:12 · 234 阅读 · 0 评论 -
编写一个TCP吐槽聊天室,接收来自各方TCP客户端的吐槽信息,并将信息直接输出到屏幕上
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。要求:1.能随时接收任何客户端的连接和信息。2.建立一定的防刷屏机制,使得客户端的吐槽不能太快。3.显示当前的连接总数。4.如果使用多线程或者多进程,注意防范僵尸。运行结果:具体代码:/* 服务器部分:*/#include <stdio.h> #include <string.h>#include <stdlib.h>原创 2020-09-08 21:44:41 · 291 阅读 · 0 评论 -
编写一个基于 TCP 的镜子服务器,将客户端发送过来的数据照原样反弹回去。
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。要求:编写一个基于 TCP 的镜子服务器,将客户端发送过来的数据照原样反弹回去。运行结果/* 服务器部分:*/#include <stdio.h> #include <string.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>原创 2020-09-08 19:38:15 · 240 阅读 · 0 评论 -
多线程编译时出现undefined reference to `pthread_create‘错误提示
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。出现如下错误提示:/tmp/cckoveZu.o: In function `main':server.c:(.text+0x31a): undefined reference to `pthread_create'collect2: error: ld returned 1 exit status解决办法:在编译命令后加上后缀 -pthread例如上图的修正写法 :原创 2020-09-08 19:33:06 · 2038 阅读 · 1 评论 -
TCP通信: Address already in use
程序运行时出现下图报错:原因: 端口释放后,需要等待将近30秒的时间,才能再次使用,而在这段时间内再次运行代码,都会出现Address already in use,从而不能正常运行解法: 创建套接字之后,设置端口释放后立即就可以被再次使用 int on=1; setsockopt(套接字,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)); //设置端口释放后立即就可以被再次使用修改好后的版本:在端口断开后能立即再次使用下面是原码:/* 服务原创 2020-09-08 12:08:49 · 1302 阅读 · 0 评论 -
TCP通信应用实例:服务器与单个客户端通信
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。运行结果:服务器部分:客户端部分:服务器部分 :/* 服务器部分:*/#include <stdio.h> #include <string.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>#include <arp原创 2020-09-08 12:05:25 · 378 阅读 · 0 评论 -
TCP广播与点播简单模拟
更多资料请点击:我的目录本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。任务要求:①链表分别存储不同客户端产生的新套接字;②群发功能(广播),客户端A发消息,其他所有客户端都能收到A的消息,如果客户端A断开连接,所有其他客户端收到A的下线通知,聊天仍然继续,需要删除客户端A的信息;③服务器断开,所有在线客户端收到“服务器出错”提示,并要求所有在线客户端都退出;④私聊功能(点播),客户端A以 “IP:端口号:消息”格式发送消息,服务器收到消息先进原创 2020-08-20 09:02:04 · 932 阅读 · 0 评论