ClientExample.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class ClientExample : MonoBehaviour {
  6. private Tcp_Client tc;
  7. public static ClientExample Instance;
  8. // Use this for initialization
  9. void Start()
  10. {
  11. string ip = PlayerPrefs.GetString("ip");
  12. if (ip != string.Empty)
  13. {
  14. }
  15. Instance = this;
  16. tc = GetComponent<Tcp_Client>();
  17. }
  18. void Update()
  19. {
  20. byte[] receiveMsg = TcpReceiveManager.getMsg();
  21. if (receiveMsg != null)
  22. {
  23. MessageData msg = BufferToMessage(receiveMsg);
  24. Debug.Log(msg.id);
  25. //string msg = Tcp_Util.BytesToString (receiveMsg);
  26. //text_receive.text += msg + "\n";
  27. }
  28. }
  29. public void connect(string text)
  30. {
  31. tc.StartUp(text, 50001);
  32. PlayerPrefs.SetString("ip", text);
  33. }
  34. public void send(string id, string action)
  35. {
  36. TextData msg = new TextData();
  37. msg.id = id;
  38. msg.text = action;
  39. //byte[] bytes = Tcp_Util.StringToBytes (text_send.text);
  40. byte[] bytes = MessageToBuffer(msg);
  41. tc.Send(bytes);
  42. }
  43. public static MessageData BufferToMessage(byte[] bytes)
  44. {
  45. byte[] recvBytesBody = Tcp_Util.Decompress(bytes);
  46. MessageData msg = (MessageData)Tcp_Util.Deserialize(recvBytesBody);
  47. return msg;
  48. }
  49. public static byte[] MessageToBuffer(MessageData msg)
  50. {
  51. byte[] buffer = Tcp_Util.Compress(Tcp_Util.Serialize(msg));//将类转换为二进制
  52. byte[] head = Tcp_Util.intToBytes(buffer.Length);
  53. List<byte> sendBuffer = new List<byte>();
  54. sendBuffer.AddRange(head);
  55. sendBuffer.AddRange(buffer);
  56. return sendBuffer.ToArray();
  57. }
  58. }