自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 UDP聊天室

UDP 是无连接的协议,不需要建立和维护连接,减少了握手和确认的开销,因此传输速度更快。这对于实时性要求高的聊天应用来说很重要。:UDP 是面向数据报的协议,每个数据包都是独立的,因此可以支持更多的并发连接,扩展性更好。这对于大规模的聊天室应用很有优势。:虽然 UDP 本身不可靠,但对于聊天应用来说,偶尔丢失一些消息并不会对用户体验造成太大影响。相反,TCP 的重传机制可能会导致更高的延迟。:UDP 协议的实现相对简单,系统开销更低,可以支持更多的并发连接。这对于资源受限的设备或服务器来说很重要。

2024-09-02 21:36:30 227

原创 利用多进程与多线程实现并发操作

1.多进程实现并发操作2.多线程实现并发操作。

2024-08-17 20:10:56 673

原创 基于poll完成IO多路复用

当fd确实发生了events事件时,poll函数会将events的内容写入revents,此时我们就可以通过轮询判断那个文件描述符的revente的内容和events内容相同。如果想要对读事件进行监听的话,events写POLLIN(监听类型分三种1.对读事件进行监听。第二个成员变量 events 是想poll说明我要对这个文件描述符的哪种事件进行监听,当服务器接收到客服端退出消息的情况:fds[i--]=fds[flag--];循环监听就是对就结构体数组的遍历,每次遍历的个数由传入的参数决定。

2024-08-15 09:14:04 309 1

原创 实现客服端和服务端的全双工通信

5.进行io多路复用完成通信(select fd_set)()当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。5.进行io多路复用完成通信(select fd_set)函数返回时告诉进程哪个描述符已就绪,可以进行I/O操作。3.监视(将主动套接字转换为被动套接字)(listen)2.将ip号和端口号绑定到套接字中(bind)客服端:(客服端和服务端的基本操作基本一样)4.阻塞函数等待客服端连接(accept)使用I/O多路复用技术。1.创建套接字(socket)欢迎大家在评论区讨论!

2024-08-12 22:02:33 472 1

原创 字符串函数 string函数

首先提出sizeof()他不属于字符串函数只是用来求内存中开辟的大小单位是字节。需要注意的是sizeof()是会将'\0'也计算进去。若[]中有了具体的数字如:a[10]="hello",此时在内存中开辟了10个字节的空间分别存放了h e l l o以及5给\0所以sizeof(a)=10;

2024-07-07 14:19:08 1123

原创 大端与小端存储

大端存储:假设此时有一个数需要存储到内存中,这个数的十六进制为0xff112233,我们知道33表示这个数的地位,ff代表高位,我们的大端存储就是地位存储到高地址中,高位存储到低地址中。当一个数据存储到内存中时会分为大端存储和小端存储,了解大小端存储是为了以后给他人传输数据不会出错。小端存储和大端存储刚好相反:地位存储到低地址处,高位存储到高字节处。此时我们可以看到控制台输出的是0x33表示小编的存储模式是小端存储模式。可以看出小端存储模式是倒着进行存储的,大端存储是正着进行存储的。

2024-07-06 19:56:06 151

原创 结构体内存对齐

第二个类型为int 为4个字节,编译器默认的对齐数为8,按照第二条规则要对齐到编译器默认的对齐数与该成员大小的较小值所以此时的对齐数为4,所以int b此时要存储到偏移量为4的倍数,所以此时到偏移量为4的位置开始存储。此时该结构体的大小为9个字节我们按照第三条规则:结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍,前面我们计算的对齐数分别为“1”, “4”,“1”所以结构体总大小为12。声明:我使用的是vs编译器,该编译器默认偏移量为8,每个编译器默认的偏移量不同。

2024-06-03 22:09:54 430

原创 用C语言实现简易版三子棋小游戏

此时便完成玩家下棋功能。先进行棋盘的初始化,后进行棋盘的打印,后开始玩家与电脑的下棋当玩家下完棋后便判断游戏输赢,(当返回的是”*“表示玩家获胜,”#“表示电脑获胜,”b“表示平局,”c“表示游戏继续)若返回的值不是”c“便继续游戏,若返回”c:后便跳出循环,不在进行下棋操作,并打印棋盘,电脑下棋也是相应的操作,后对返回的值进行判断来输出最后谁获胜,或平局最后进行棋盘的打印方便看最后棋盘获胜的情况。首先分为玩家下棋与电脑下棋,我是通过输入对应坐标来判定下在棋盘相应位置,最后进行判断谁获得本次游戏的胜利。

2024-04-06 22:23:13 1721 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除