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

扫一扫,访问微社区

开发者专栏

关注:2332

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

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

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

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

[复制链接]  [移动端链接]
6蛮牛粉丝
1023/1500
排名
2507
昨日变化
13

11

主题

75

帖子

1023

积分

Rank: 6Rank: 6Rank: 6

UID
228559
好友
6
蛮牛币
2371
威望
0
注册时间
2017-6-25
在线时间
381 小时
最后登录
2018-10-21

专栏作家

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

售价: 1 蛮牛币  [记录]

评分

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

查看全部评分


回复

使用道具 举报

7日久生情
3301/5000
排名
1937
昨日变化
1

0

主题

2122

帖子

3301

积分

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

UID
219676
好友
1
蛮牛币
2412
威望
0
注册时间
2017-7-12
在线时间
513 小时
最后登录
2018-10-20

活力之星

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

回复

使用道具 举报

7日久生情
1912/5000
排名
4298
昨日变化
2

0

主题

1335

帖子

1912

积分

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

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

回复

使用道具 举报

7日久生情
2896/5000
排名
225
昨日变化

0

主题

117

帖子

2896

积分

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

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

回复

使用道具 举报

7日久生情
1868/5000
排名
895
昨日变化
5

7

主题

220

帖子

1868

积分

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

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

回复

使用道具 举报

5熟悉之中
551/1000
排名
5221
昨日变化
1

0

主题

163

帖子

551

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

3偶尔光临
185/300
排名
10004
昨日变化
1

0

主题

26

帖子

185

积分

Rank: 3Rank: 3Rank: 3

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

回复 支持 反对

使用道具 举报

7日久生情
1795/5000
排名
2279
昨日变化

5

主题

719

帖子

1795

积分

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

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

回复

使用道具 举报

7日久生情
3166/5000
排名
2319
昨日变化

0

主题

2266

帖子

3166

积分

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

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

回复

使用道具 举报

5熟悉之中
803/1000
排名
5103
昨日变化
2

41

主题

161

帖子

803

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1392/1500
排名
1634
昨日变化
5

0

主题

402

帖子

1392

积分

Rank: 6Rank: 6Rank: 6

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

回复 支持 反对

使用道具 举报

3偶尔光临
154/300
排名
10004
昨日变化
1

0

主题

8

帖子

154

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

5熟悉之中
526/1000
排名
4017
昨日变化

0

主题

45

帖子

526

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

7日久生情
1553/5000
排名
1011
昨日变化

0

主题

211

帖子

1553

积分

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

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

回复 支持 反对

使用道具 举报

5熟悉之中
842/1000
排名
5528
昨日变化

0

主题

436

帖子

842

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

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

本版积分规则

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