diff --git a/Assets/MsgTransmitTools/TCPClient/Example.meta b/Assets/MsgTransmitTools/Example.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example.meta
rename to Assets/MsgTransmitTools/Example.meta
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes.meta b/Assets/MsgTransmitTools/Example/Scenes.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes.meta
rename to Assets/MsgTransmitTools/Example/Scenes.meta
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/BluetoothExample.unity b/Assets/MsgTransmitTools/Example/Scenes/BluetoothExample.unity
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/BluetoothExample.unity
rename to Assets/MsgTransmitTools/Example/Scenes/BluetoothExample.unity
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/BluetoothExample.unity.meta b/Assets/MsgTransmitTools/Example/Scenes/BluetoothExample.unity.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/BluetoothExample.unity.meta
rename to Assets/MsgTransmitTools/Example/Scenes/BluetoothExample.unity.meta
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/TCPLinkExample.unity b/Assets/MsgTransmitTools/Example/Scenes/TCPLinkExample.unity
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/TCPLinkExample.unity
rename to Assets/MsgTransmitTools/Example/Scenes/TCPLinkExample.unity
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/TCPLinkExample.unity.meta b/Assets/MsgTransmitTools/Example/Scenes/TCPLinkExample.unity.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/TCPLinkExample.unity.meta
rename to Assets/MsgTransmitTools/Example/Scenes/TCPLinkExample.unity.meta
diff --git a/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity b/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity
new file mode 100644
index 0000000..5842a51
--- /dev/null
+++ b/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity
@@ -0,0 +1,703 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &420227241
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 420227244}
+ - component: {fileID: 420227243}
+ - component: {fileID: 420227242}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &420227242
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 420227241}
+ m_Enabled: 1
+--- !u!20 &420227243
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 420227241}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &420227244
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 420227241}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &846447147
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 846447148}
+ - component: {fileID: 846447150}
+ - component: {fileID: 846447149}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &846447148
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 846447147}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 2100516200}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &846447149
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 846447147}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Button
+--- !u!222 &846447150
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 846447147}
+ m_CullTransparentMesh: 0
+--- !u!1 &897822730
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 897822732}
+ - component: {fileID: 897822731}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &897822731
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 897822730}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &897822732
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 897822730}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1020834817
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1020834819}
+ - component: {fileID: 1020834818}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1020834818
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1020834817}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d21a45ed4d4194444984809e9676e7fb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!4 &1020834819
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1020834817}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1253481797
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1253481801}
+ - component: {fileID: 1253481800}
+ - component: {fileID: 1253481799}
+ - component: {fileID: 1253481798}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1253481798
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1253481797}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1253481799
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1253481797}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1253481800
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1253481797}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1253481801
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1253481797}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 2100516200}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &1822805530
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1822805533}
+ - component: {fileID: 1822805532}
+ - component: {fileID: 1822805531}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1822805531
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1822805530}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1822805532
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1822805530}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1822805533
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1822805530}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2100516199
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2100516200}
+ - component: {fileID: 2100516203}
+ - component: {fileID: 2100516202}
+ - component: {fileID: 2100516201}
+ m_Layer: 5
+ m_Name: Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2100516200
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2100516199}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 846447148}
+ m_Father: {fileID: 1253481801}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2100516201
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2100516199}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2100516202}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &2100516202
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2100516199}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2100516203
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2100516199}
+ m_CullTransparentMesh: 0
diff --git a/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity.meta b/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity.meta
new file mode 100644
index 0000000..1145d7b
--- /dev/null
+++ b/Assets/MsgTransmitTools/Example/Scenes/TCPServerExample.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3682974d88def024b835a16678a2b33b
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/UDPLinkExample.unity b/Assets/MsgTransmitTools/Example/Scenes/UDPLinkExample.unity
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/UDPLinkExample.unity
rename to Assets/MsgTransmitTools/Example/Scenes/UDPLinkExample.unity
diff --git a/Assets/MsgTransmitTools/TCPClient/Example/Scenes/UDPLinkExample.unity.meta b/Assets/MsgTransmitTools/Example/Scenes/UDPLinkExample.unity.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Example/Scenes/UDPLinkExample.unity.meta
rename to Assets/MsgTransmitTools/Example/Scenes/UDPLinkExample.unity.meta
diff --git a/Assets/MsgTransmitTools/TCPClient/Script/Source.meta b/Assets/MsgTransmitTools/TCPClient/Script/Source.meta
deleted file mode 100644
index 6027d24..0000000
--- a/Assets/MsgTransmitTools/TCPClient/Script/Source.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 6175f27812bd6b446b1ad0a1d7806664
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientModel.cs b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientModel.cs
similarity index 99%
rename from Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientModel.cs
rename to Assets/MsgTransmitTools/TCPClient/Script/TCPClientModel.cs
index 45b87d3..a058dda 100644
--- a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientModel.cs
+++ b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientModel.cs
@@ -1,6 +1,5 @@
using UnityEngine;
using QFrameworkCP;
-using JXSoft;
using System;
using System.Text;
using System.Net.Sockets;
diff --git a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientModel.cs.meta b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientModel.cs.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientModel.cs.meta
rename to Assets/MsgTransmitTools/TCPClient/Script/TCPClientModel.cs.meta
diff --git a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientView.cs b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientView.cs
similarity index 98%
rename from Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientView.cs
rename to Assets/MsgTransmitTools/TCPClient/Script/TCPClientView.cs
index c046c84..bc8c371 100644
--- a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientView.cs
+++ b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientView.cs
@@ -1,10 +1,7 @@
using System.Collections;
-using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using QFrameworkCP;
-using JXSoft;
-using System;
using System.Threading;
using UnityEngine.UI;
diff --git a/Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientView.cs.meta b/Assets/MsgTransmitTools/TCPClient/Script/TCPClientView.cs.meta
similarity index 100%
rename from Assets/MsgTransmitTools/TCPClient/Script/Source/TCPClientView.cs.meta
rename to Assets/MsgTransmitTools/TCPClient/Script/TCPClientView.cs.meta
diff --git a/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs b/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs
new file mode 100644
index 0000000..626f826
--- /dev/null
+++ b/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs
@@ -0,0 +1,128 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using UnityEngine;
+
+public class SocketServer : MonoBehaviour
+{
+ int _port = 6000;
+ string _ip = "127.0.0.1";
+ Thread thread;
+
+ void Start()
+ {
+ StartServer();
+ }
+
+ // Use this for initialization
+ public void StartServer()
+ {
+ bt_connnect_Click();
+ }
+
+
+ private void bt_connnect_Click()
+ {
+ try
+ {
+ //点击开始监听时 在服务端创建一个负责监听IP和端口号的Socket
+ Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ IPAddress ip = IPAddress.Parse(_ip);
+ //创建对象端口
+ IPEndPoint point = new IPEndPoint(ip, _port);
+
+ socketWatch.Bind(point);//绑定端口号
+ Debug.Log("监听成功!");
+ socketWatch.Listen(10);//设置监听,最大同时连接10台
+
+ //创建监听线程
+ thread = new Thread(Listen);
+ thread.IsBackground = true;
+ thread.Start(socketWatch);
+ }
+ catch { }
+
+ }
+
+ ///
+ /// 等待客户端的连接 并且创建与之通信的Socket
+ ///
+ Socket socketSend;
+ void Listen(object o)
+ {
+ try
+ {
+ Socket socketWatch = o as Socket;
+ while (true)
+ {
+ socketSend = socketWatch.Accept();//等待接收客户端连接
+ Debug.Log(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功!");
+ //开启一个新线程,执行接收消息方法
+ Thread r_thread = new Thread(Received);
+ r_thread.IsBackground = true;
+ r_thread.Start(socketSend);
+ }
+ }
+ catch { }
+ }
+
+ ///
+ /// 服务器端不停的接收客户端发来的消息
+ ///
+ ///
+ void Received(object o)
+ {
+ try
+ {
+ Socket socketSend = o as Socket;
+ while (true)
+ {
+ //客户端连接服务器成功后,服务器接收客户端发送的消息
+ byte[] buffer = new byte[1024 * 1024 * 3];
+ //实际接收到的有效字节数
+ int len = socketSend.Receive(buffer);
+ if (len == 0)
+ {
+ break;
+ }
+ string str = Encoding.UTF8.GetString(buffer, 0, len);
+ Debug.Log("服务器打印:" + socketSend.RemoteEndPoint + ":" + str);
+ Send("我收到了");
+ }
+ }
+ catch { }
+ }
+
+ ///
+ /// 服务器向客户端发送消息
+ ///
+ ///
+ void Send(string str)
+ {
+ byte[] buffer = Encoding.UTF8.GetBytes(str);
+ socketSend.Send(buffer);
+ }
+
+ public void SocketQuit()
+ {
+ //关闭线程
+ if (thread != null)
+ {
+ thread.Interrupt();
+ thread.Abort();
+ }
+ //最后关闭服务器
+ if (socketSend != null)
+ socketSend.Close();
+ print("diconnect");
+ }
+ void OnApplicationQuit()
+ {
+ //退出时关闭连接
+ SocketQuit();
+ }
+}
diff --git a/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs.meta b/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs.meta
new file mode 100644
index 0000000..efac0d0
--- /dev/null
+++ b/Assets/MsgTransmitTools/TCPServer/Script/SocketServer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d21a45ed4d4194444984809e9676e7fb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MsgTransmitTools/TCPServer/Script/TCPServerModel.cs b/Assets/MsgTransmitTools/TCPServer/Script/TCPServerModel.cs
index 3970e9a..5a05be7 100644
--- a/Assets/MsgTransmitTools/TCPServer/Script/TCPServerModel.cs
+++ b/Assets/MsgTransmitTools/TCPServer/Script/TCPServerModel.cs
@@ -1,6 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System;
+using System.Text;
+using System.Net.Sockets;
+using System.Threading;
+using System.Net.NetworkInformation;
+using System.Text.RegularExpressions;
+using System.Net;
namespace JXSoft {
public class TCPServerModel:DataEventModel
@@ -21,8 +28,29 @@ namespace JXSoft {
}
}
- public class TCPServer {
-
+ public class TCPServerUtility {
+ public Socket tcpServer;
+
+ ///
+ /// 开启服务
+ ///
+ /// 端口号
+ /// 最大连接数
+ public void startServer(int port,int maxLink) {
+ try
+ {
+ //点击开始监听时 在服务端创建一个负责监听IP和端口号的Socket
+ tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ IPAddress ip = IPAddress.Parse("127.0.0.1");
+ //创建对象端口
+ IPEndPoint point = new IPEndPoint(ip, port);
+
+ tcpServer.Bind(point);//绑定端口号
+ Debug.Log("监听成功!");
+ tcpServer.Listen(maxLink);//设置监听,最大同时连接10台
+ }
+ catch { }
+ }
}
}
diff --git a/Assets/MsgTransmitTools/src/ProtocolSettingsModel.cs b/Assets/MsgTransmitTools/src/ProtocolSettingsModel.cs
index 97f4114..a28dcb1 100644
--- a/Assets/MsgTransmitTools/src/ProtocolSettingsModel.cs
+++ b/Assets/MsgTransmitTools/src/ProtocolSettingsModel.cs
@@ -11,20 +11,20 @@ namespace JXSoft {
{
}
- private ProtocolType protocolType = ProtocolType.NOPROTOCOL;
+ private ProtocolType_ protocolType = ProtocolType_.NOPROTOCOL;
public DataEventModel getProtocol()
{
switch (protocolType)
{
- case (ProtocolType.TCP):
+ case (ProtocolType_.TCP):
return this.GetModel();
- case (ProtocolType.UDP):
+ case (ProtocolType_.UDP):
return this.GetModel();
default:
return this.GetModel();
}
}
- public void setProtocol(ProtocolType type)
+ public void setProtocol(ProtocolType_ type)
{
protocolType = type;
this.SendEvent(new OnProtocolSet(type));
@@ -32,7 +32,7 @@ namespace JXSoft {
}
[SerializeField]
- public enum ProtocolType
+ public enum ProtocolType_
{
NOPROTOCOL = 0,
TCP = 1,
@@ -40,8 +40,8 @@ namespace JXSoft {
}
public struct OnProtocolSet
{
- public ProtocolType type;
- public OnProtocolSet(ProtocolType type_)
+ public ProtocolType_ type;
+ public OnProtocolSet(ProtocolType_ type_)
{
type = type_;
}