![](https://img-blog.csdnimg.cn/049c38f8abb8449292b8a86f36d08b30.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
TCP
文章平均质量分 91
C#写TCP
Kerven_HKW
做一个牛人
展开
-
0.专栏首页
1.Server和Client同步收发消息的实现2.UTF-8使用三个字节表示一个非ANSI字符3.Server和Client异步收发消息的实现4.总结1和3同步及异步5.粘包和分包问题6.字符串和值类型转换成字节数据7.数据的发送和接收8.前面篇章的代码9.操作数据库10.从头开始做服务端11.开始写客户端...原创 2020-03-30 22:56:32 · 1140 阅读 · 0 评论 -
Socket/TCP/unity5.6
TCP/IP端口号TCP的三次握手四次挥手TCP服务器端和客户端接收数据和发送数据(同步)TCPServer.csusing System;using System.Collections.Generic;using System.Linq;using System.Net.Sockets;using System.Text;using System...原创 2019-09-02 09:32:34 · 822 阅读 · 0 评论 -
Socket异步通讯-Unity实现服务端、客户端和数据库
服务器端Conn.csusing System;using System.Net;using System.Net.Sockets;using System.Collections;using System.Collections.Generic;public class Conn{ //常量 public const int BUFFER_SIZE = 1024;...原创 2019-08-31 22:22:06 · 1400 阅读 · 0 评论 -
1.Server和Client同步收发消息的实现
本篇写的是利用C# Socket TCP 的同步方式实现服务端和客户端的收发消息,作为一个简单的入门。1.新建一个 TCPServer的控制台应用程序:把下面代码粘贴到Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System....原创 2019-09-22 17:30:54 · 1801 阅读 · 0 评论 -
2.UTF-8使用三个字节表示一个非ANSI字符
问题的引出是因为在上一篇中使用的编码是 Encoding.UTF8.GetBytes(string),中文在编码之后居然是占三个字节,而不是两个字节,就好奇去找原因。 这算是一个拓展文章。 UNICODE是万能编码,包括了所有符号的编码,它了规定所有符号在计算机底层的二进制的表示顺序,是针对所有计算机使用者定义的一套统一的编码规范,这样计算机使用者就能避免...原创 2019-09-23 00:19:23 · 1278 阅读 · 0 评论 -
3.Server和Client异步收发消息的实现
本篇写的是利用C# TCP的异步方式实现服务器处理多个客户端的连接,以及使用异步的方式实现客户端和服务端的收发消息。实现服务器处理多个客户端连接以及两端收发消息有多线程和异步实现两种方式,多线程的实现不在本篇的实现范围内,本篇只给出C#异步的实现代码。相关代码如下:Server端:using System;using System.Collections.Generic;us...原创 2019-10-05 07:52:50 · 1291 阅读 · 0 评论 -
4.总结1和3同步及异步
1.同步方式 Accept Connect Receive2.异步方式 BeginAccept EndAccept BeginReceive EndReceive原创 2019-10-05 12:06:55 · 1051 阅读 · 0 评论 -
5.粘包和分包问题
粘包和分包是利用Socket在TCP协议下内部的优化机制。都是为了优化TCP的性能。在前面的文章中,我们都还没有涉及粘包和分包的问题。1.粘包发送消息频繁、包体很小,则把消息整合成一个包,一起发送。2.分包在收到消息的时候,不一定只是一条消息,就需要分包。数据量很大的时候,分成几个消息发送。(消息发送失败,重新发送的时候,需要重发的消息也小)3.粘包和分包问题场景重现:...原创 2019-10-05 13:56:55 · 1112 阅读 · 0 评论 -
6.字符串和值类型转换成字节数据
字节转换1.字符串转换成字节数组 System.Text.Encoding.UTF8.GetBytes2.Int32转换成字节数组 BitConverter.GetBytes -- 处理值类型,数据长度固定转换为四个字节。 .ToInt32...原创 2019-10-05 14:08:14 · 1894 阅读 · 0 评论 -
7.数据的发送和接收
1.在客户端发送数据的时候加上数据长度 带数据长度,如何发送数据和接收数据呢?在客户端新建一个Message类处理消息长度和消息体using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespac...原创 2019-10-05 20:09:26 · 1883 阅读 · 0 评论 -
8.前面篇章的代码
这里贴出前面篇章的所有代码:Server端Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net.Sockets;using System.Net;n...原创 2019-10-05 20:15:25 · 1073 阅读 · 0 评论 -
9.操作数据库
前面提到的都是一些简单的客户端与服务端连接进行收发消息。接下来这一篇会讲解到C#与MySQL数据库的相关操作代码。MySQL数据库的安装及相关的建表不在本章的讲述范围,请读者自行百度,有问题的可以在下方评论留言。这里给我一张简单的user表结构:数据库增删改查,以及防止SQL注入的相关C#代码如下:using System;using System.Collections....原创 2019-10-06 22:17:30 · 1028 阅读 · 0 评论 -
11.开始写客户端
接下来会来到客户端的阶段游戏逻辑:1.游戏逻辑开发 人物控制,摄像机跟随,攻击2.游戏UI开发 登录界面 注册界面 房间列表 创建房间客户端的码云路径:https://gitee.com/hankangwen/TCPGameClient.git...原创 2019-10-07 22:45:05 · 1051 阅读 · 0 评论 -
10.从头开始做服务端
前面做了这么多准备,都是为了理解怎么连接和开发服务器和客户端。接下来开发一个有分层结构的Server端。一共包括:1.Server2.ConnHelper3.Controller4.Model5.DAO相关的工程代码在:https://gitee.com/hankangwen/TCPGameServer分层结构图:...原创 2019-10-07 22:28:30 · 1089 阅读 · 0 评论