游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2286

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 5037|回复: 50

[游戏小猪] 小猪笔记,从零开始搭建socket框架,hello world

[复制链接]  [移动端链接]
5熟悉之中
888/1000
排名
3087
昨日变化
14

11

主题

71

帖子

888

积分

Rank: 5Rank: 5

UID
228559
好友
6
蛮牛币
2158
威望
0
注册时间
2017-6-25
在线时间
348 小时
最后登录
2018-8-17

专栏作家

QQ
发表于 2018-4-29 20:04:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
   相信困扰很多萌新进阶的又很多,socket就是其中的一个,那么我们现在就把他掰开了揉细了,一步步自己来完成一个看起来像那么回事的socket框架;当然了,这里主要是客户端的   首先,socket的几个步骤,不必多说,声明socket,绑定,设置最大监听数,服务端接受链接,接收消息,发送消息;客户端声明socket,链接,接收,发送;
   一个看起来像那么回事的socket框架,应该具备以下几点功能
        1.  首先当然是能正常的发送和接收消息
        2. 可以同时处理多个socket,因为服务器可能并不是只有一个,比如说,又运营服务器,游戏服务器,匹配服务器,战斗服务器等等,这种情况就需要又多个socket
        3. 可以处理数据的压缩和解压缩,这个又现成的,我们拿过来用就行了
        4. 可以处理数据的粘包和分包,比如说一条数据又100个长度,而第一次只接收到了10个,后续再接收到了,把他组装起来
        5. 数据的加密,加密算法可以自己写,也可以用网上现成的,不做讨论
        6. 数据转byte数组和byte数组转需要数据
        7. 协议的规定以及消息的分发
  以上就是一个看起来像那么回事的socket框架应该具备的基本功能了,如有遗漏,请见谅;按照惯例,我们当然是来个最简单的,首先让我们的程序能够正常的跑起来。socket的连接,分为了同步方式和异步方式,既然又同步和异步了,那么我们当然是用最简单的异步方式了,这样可以照顾到那些对于多线程编程还是一脸懵逼的童鞋;
     首先再服务端和客户端都定义一个socket,然后设置ip和端口号,以及初始化;服务端绑定端口号,并且设置最大连接数,开启监听,接受连接;客户端定义个socket,同样的设置端口和IP,并不需要绑定端口什么的,客户端主动发起连接;
    0.jpg 1.jpg

   至于这个  ConnectSocket 先不用管他,我准备将来做连接池用的,如果有必要的话,因为我们这里主要是想要搭建一个客户端的socket框架,既然说到这里了,那么就说一下连接池是个什么东西,他当然是一个保存socket的容器,就和普通的对象池一样,他是一个连接重复使用的东西,为了避免每次都重新创建,这样耗费性能;有必要的话,后边会教大家撸的;
     我们前边说了,我们采用c#的socket异步连接;再c#中,几乎所有的异步连接,都会以Begin开头,以End结尾,额,暂且叫他结尾吧;所有的Begin都接收一个以IAsyncResult 为参数的回掉函数。其中End额在其中,返回异步操作的结果;而IAsyncResult的AsyncState属性会返回一个obj,我们用来还原异步操作的对象,也就是socket;然后用这个socket,来调用end方法socket.EndXXX,来得到异步操作的结果。服务端需要循环调用,达到循环接收连接以及接受消息的目的;

         然后我们首先启动服务端,再启动客户端,就可以看到,连接已经成功了; 2.jpg 3.jpg
          这里我用按下空格键,来发送一条消息,服务端收到客户端发送的消息后,再返回来一条;
       4.jpg





新建文件夹.zip

151.52 KB, 下载次数: 218

售价: 1 蛮牛币  [记录]

评分

参与人数 1鲜花 +5 收起 理由
研究者 + 5 很给力!

查看全部评分


回复

使用道具 举报

7日久生情
3150/5000
排名
2218
昨日变化
7

0

主题

2101

帖子

3150

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2424
威望
0
注册时间
2017-7-12
在线时间
465 小时
最后登录
2018-8-17

活力之星

发表于 2018-4-29 21:35:16 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
1906/5000
排名
4258
昨日变化
6

0

主题

1334

帖子

1906

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
267381
好友
5
蛮牛币
3186
威望
0
注册时间
2018-2-1
在线时间
256 小时
最后登录
2018-8-6
发表于 2018-4-30 08:17:49 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
2878/5000
排名
202
昨日变化
2

0

主题

117

帖子

2878

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
846
好友
3
蛮牛币
429
威望
0
注册时间
2013-7-13
在线时间
771 小时
最后登录
2018-8-17
发表于 2018-4-30 09:20:47 | 显示全部楼层
给力!威武!

回复

使用道具 举报

7日久生情
1737/5000
排名
1006
昨日变化
1

7

主题

210

帖子

1737

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
167044
好友
0
蛮牛币
3135
威望
0
注册时间
2016-9-6
在线时间
515 小时
最后登录
2018-8-17
发表于 2018-4-30 10:46:19 | 显示全部楼层
6666666664324

回复

使用道具 举报

4四处流浪
329/500
排名
6815
昨日变化
45

0

主题

79

帖子

329

积分

Rank: 4

UID
267103
好友
0
蛮牛币
680
威望
0
注册时间
2018-1-31
在线时间
74 小时
最后登录
2018-8-17
发表于 2018-4-30 11:57:10 | 显示全部楼层

回复

使用道具 举报

3偶尔光临
174/300
排名
10290
昨日变化
4

0

主题

25

帖子

174

积分

Rank: 3Rank: 3Rank: 3

UID
267262
好友
0
蛮牛币
267
威望
0
注册时间
2018-2-1
在线时间
55 小时
最后登录
2018-8-17
发表于 2018-5-1 13:16:25 | 显示全部楼层
{:107:}{:107:}{:107:}

回复 支持 反对

使用道具 举报

7日久生情
1586/5000
排名
2727
昨日变化
7

5

主题

661

帖子

1586

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
239879
好友
1
蛮牛币
3087
威望
0
注册时间
2017-8-26
在线时间
432 小时
最后登录
2018-8-17
发表于 2018-5-2 08:47:31 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
2640/5000
排名
2692
昨日变化
17

0

主题

1878

帖子

2640

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
0
蛮牛币
3844
威望
0
注册时间
2016-11-20
在线时间
268 小时
最后登录
2018-8-17
发表于 2018-5-2 09:34:58 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
727/1000
排名
5465
昨日变化
28

38

主题

157

帖子

727

积分

Rank: 5Rank: 5

UID
243169
好友
0
蛮牛币
516
威望
0
注册时间
2017-9-13
在线时间
298 小时
最后登录
2018-8-17
发表于 2018-5-2 11:20:51 | 显示全部楼层
这个vs写的几个引用的2017的能显示出来吗?怎么设置啊

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1186/1500
排名
1918
昨日变化
7

0

主题

328

帖子

1186

积分

Rank: 6Rank: 6Rank: 6

UID
87577
好友
0
蛮牛币
3854
威望
0
注册时间
2015-3-31
在线时间
208 小时
最后登录
2018-8-17
发表于 2018-5-2 12:15:20 | 显示全部楼层
henhaohenqiangda

回复 支持 反对

使用道具 举报

2初来乍到
143/150
排名
10407
昨日变化
4

0

主题

8

帖子

143

积分

Rank: 2Rank: 2

UID
277917
好友
3
蛮牛币
173
威望
0
注册时间
2018-4-19
在线时间
43 小时
最后登录
2018-8-15
发表于 2018-5-2 17:16:40 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
417/500
排名
4871
昨日变化
36

0

主题

41

帖子

417

积分

Rank: 4

UID
197052
好友
0
蛮牛币
1564
威望
0
注册时间
2016-12-29
在线时间
108 小时
最后登录
2018-8-17
发表于 2018-5-2 19:24:19 | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
1524/5000
排名
1001
昨日变化
4

0

主题

209

帖子

1524

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
37063
好友
1
蛮牛币
4415
威望
0
注册时间
2014-7-30
在线时间
309 小时
最后登录
2018-8-17
发表于 2018-5-2 20:06:08 | 显示全部楼层
{:90:}{:90:}{:90:}{:90:}{:90:}

回复 支持 反对

使用道具 举报

5熟悉之中
837/1000
排名
5385
昨日变化
6

0

主题

433

帖子

837

积分

Rank: 5Rank: 5

UID
146677
好友
9
蛮牛币
2720
威望
0
注册时间
2016-4-25
在线时间
164 小时
最后登录
2018-8-9
QQ
发表于 2018-5-3 09:08:07 | 显示全部楼层
谢谢分享,给个支持

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表