开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2213

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

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

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

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

[复制链接]  [移动端链接]
5熟悉之中
672/1000
排名
4169
昨日变化
3

9

主题

69

帖子

672

积分

Rank: 5Rank: 5

UID
228559
好友
6
蛮牛币
1617
威望
0
注册时间
2017-6-25
在线时间
276 小时
最后登录
2018-5-14

专栏作家

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, 下载次数: 96

售价: 1 蛮牛币  [记录]


回复

使用道具 举报

7日久生情
2692/5000
排名
2953
昨日变化
16

0

主题

1888

帖子

2692

积分

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

UID
219676
好友
0
蛮牛币
2488
威望
0
注册时间
2017-7-12
在线时间
370 小时
最后登录
2018-5-26

活力之星

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

回复

使用道具 举报

6蛮牛粉丝
1440/1500
排名
6183
昨日变化
45

0

主题

1069

帖子

1440

积分

Rank: 6Rank: 6Rank: 6

UID
267381
好友
3
蛮牛币
2350
威望
0
注册时间
2018-2-1
在线时间
179 小时
最后登录
2018-5-27

迈向小康

发表于 2018-4-30 08:17:49 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
2656/5000
排名
223
昨日变化

0

主题

112

帖子

2656

积分

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

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

回复

使用道具 举报

7日久生情
1544/5000
排名
1158
昨日变化
11

7

主题

198

帖子

1544

积分

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

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

回复

使用道具 举报

3偶尔光临
224/300
排名
9625
昨日变化
2

0

主题

73

帖子

224

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

2初来乍到
113/150
排名
12734
昨日变化
202

0

主题

17

帖子

113

积分

Rank: 2Rank: 2

UID
267262
好友
0
蛮牛币
157
威望
0
注册时间
2018-2-1
在线时间
38 小时
最后登录
2018-5-26

一贫如洗

发表于 2018-5-1 13:16:25 | 显示全部楼层
{:107:}{:107:}{:107:}

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1217/1500
排名
3728
昨日变化
20

5

主题

552

帖子

1217

积分

Rank: 6Rank: 6Rank: 6

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

回复

使用道具 举报

7日久生情
1922/5000
排名
3430
昨日变化
1

0

主题

1331

帖子

1922

积分

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

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

回复

使用道具 举报

4四处流浪
478/500
排名
8333
昨日变化
1

32

主题

127

帖子

478

积分

Rank: 4

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

回复 支持 反对

使用道具 举报

5熟悉之中
871/1000
排名
2432
昨日变化

0

主题

188

帖子

871

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

排名
14484
昨日变化
290

0

主题

7

帖子

80

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

3偶尔光临
256/300
排名
6914
昨日变化
63

0

主题

31

帖子

256

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

6蛮牛粉丝
1494/1500
排名
959
昨日变化
1

0

主题

204

帖子

1494

积分

Rank: 6Rank: 6Rank: 6

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

回复 支持 反对

使用道具 举报

5熟悉之中
763/1000
排名
5744
昨日变化

0

主题

403

帖子

763

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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